1.shell中变量名称的规范
变量的名称中通常包含大小写字母,数字,下划线 变量名中只能出现字母,数字,下划线 变量名不能以数字开头,只能以字母或者下划线开头 变量名称格式定义 WESTOS_LINUX Westos_Linux westoS_Linux
2.字符的转译
\反斜杠 | 转译单个字符 |
---|---|
""双引号 | 弱引用,批量转译“”中的字符 |
''单引号 | 强引用,批量转译‘’中的字符 |
‘’与“”两者区别 | “”不能转译"\反斜杠","`反向单引号","!感叹号","$" |
\转译单个字符或者字符串 ''强引用,也是转译,可以转译元字符 ""弱引用,也是转译,不能转译元字符 元字符: * # ! ``这些字符都有自身含义,需要转译
3.变量的声明
a=1在shell中直接定义a的值为1 echo $ab 默认会寻找ab整体的变量的值 echo ${a}b这样才能声明a是变量
a=(1 2 3) 定义一个数组 echo $a不可以 echo ${a[0]}输出数组的第一个元素 echo ${a[1]}输出数组的第二个元素 echo ${a[*]}输出数组所有元素
要用${}来声明,才可以识别变量
4.变量值传递
$1 | 脚本后的第一串字符串 |
---|---|
$2 | 脚本后的第二串字符串 |
$3 | 脚本后的第三串字符串 |
$# | 脚本后所跟字符串的个数 |
$* | 脚本后跟的所有字符串,模式为“1 2 3” |
$@ | 脚本后跟的所有字符串,模式为“1”“2”“3” |
$$ | 当前进程的pid |
编辑测试脚本
sh test.sh 通过调用脚本来看这些变量都代表什么值
可以看到$0是脚本名字
加入watch -n 1 date
执行脚本,然后ctrl+z把结果打入后台,ps f可以看到当前shell的pid,与$$对应,kill -9 结束当前shell
删除脚本中watch -n 1 date
sh test.sh linux $1是脚本后面第一个字符
sh test.sh linux westos $2是脚本后第二个字符
sh test.sh linux westos haha $3是脚本后的第三个字符
$3是脚本后跟的字符的个数 $*与$@均是所有所跟字符,看起来这两个没有什么区别,其实有区别
$@,$*的区别 编辑脚本测试文件test1.sh 写入
sh test1.sh 1 2 3
sh -x test1.sh 1 2 3 可以看出$*只执行一次,$*='1 2 3'
编辑测试脚本
可以看出$@表示执行三次,$@="1""2""3"