变量的定义
变量名的命名规则
- 字母、数字、下划线
- 不以数字开头
变量的赋值
为变量赋值的过程,称为变量替换
变量名=变量值
- a=123
使用let为变量赋值
- let a=10+20
将命令赋值给变量
- l=ls
将命令结果赋值给变量,使用$ () 或者"
变量值有空格等特殊字符可以包含在””或”中
(1)将命令结果赋值给变量,使用$ () 或者"
[email protected] ~ % cmd1=`ls test/`
[email protected] ~ % cmd2=$(ls test/)
[email protected] ~ % echo $cmd1
a.txt
aa.sh
b.txt
c.txt
d.txt
e.txt
[email protected] ~ % echo $cmd2
a.txt
aa.sh
b.txt
c.txt
d.txt
e.txt
(2)变量值有空格等特殊字符可以包含在””或”中
[email protected] ~ % str="hello bash"
[email protected] ~ % echo $str
hello bash
变量的引用
变量的引用
\${变量}称作对变量的引用
echo \${变量名}查看变量的值
\${变量名}在部分情况下可以省略为 $变量名
(1)当需要在变量后面加内容时,需要使用echo ${变量名}[email protected] ~ % str="hello bash" [email protected] ~ % echo $str hello bash [email protected] ~ % str="hello bash" [email protected] ~ % echo $str hello bash [email protected] ~ % echo ${str} hello bash # 当需要在变量后面加内容时,需要使用echo ${变量名} [email protected] ~ % echo $str123 [email protected] ~ % echo ${str}123 hello bash123
变量的作用范围
变量的默认作用范围
变量的导出
export
变量的删除
unset
(1)子进程无法访问父进程的变量
# 在父进程定义了变量a
[email protected] ~ % a=1
# 进入一个子进程,访问父进程的变量a,访问不到
[email protected] ~ % bash
The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
bash-3.2$ echo $a
bash-3.2$ a=2
bash-3.2$ exit
exit
# 在父进程访问变量a,访问的是父进程定义的,非子进程定义的
[email protected] ~ % echo $a
1
(2)变量的导出
# 在父进程定义了变量a
[email protected] ~ % a=1
# 定义一个可执行文件,内容如下:
[email protected] test % ls -l aa.sh
-rwxr--r-- 1 user1 staff 20 4 4 18:44 aa.sh
[email protected] test % cat aa.sh
#!/bin/bash
echo $a
# 在子进程中执行aa.sh,发现获取不到变量值
[email protected] test % bash aa.sh
[email protected] test % ./aa.sh
# 在父进程中执行,能够拿到变量值
[email protected] test % source aa.sh
1
[email protected] test % . ./aa.sh
1
# 使用export将变量导出,子进程就能获取到变量值
[email protected] test % export a
[email protected] test % bash aa.sh
1
原文地址:https://blog.51cto.com/12936780/2485130
时间: 2024-10-08 07:34:45