个人博客网:https://wushaopei.github.io/ (你想要这里多有)
四、Shell 中的变量
1、系统变量
1.1 常用系统变量
$HOME、 $PWD、 $SHELL 、$USER等
1.2 案例实操
(1)查看系统变量的值
(2)显示当前Shell中所有变量: set
2、自定义变量
2.1 基本语法
(1) 定义变量: 变量 = 值
(2)撤销变量: unset 变量
(3)声明静态变量: readonly 变量,注意: 不能 unset
2.2 变量定义规则
(1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
(2)等号两侧不能有空格
(3)在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
(4)变量的值如果有空格,需要使用双引号或单引号括起来
2.3 案例实操
(1)定义变量A
(2)给变量A重新赋值
(3)撤销变量
(4)声明静态的变量B=3 ,不能unset
(5)在bash中,变量默认类型都是字符串类型,无法直接进行述职运算
(6)变量的值如果有空格,需要使用双引号或单引号括起来
(7)可把变量提升为全局环境变量,可供其他Shell程序使用
export 变量名
执行脚本:
发现没有打印输出变量D的值
将局部变量提升为全局变量后,属于不同进程的脚本也可以调用全局变量的 $D 的进程,进而执行对应脚本命令
3、特殊变量:$n
3.1 基本语法
$n (功能描述: n为数字,$0 代表该脚本名称, $1-$9 代表第一道第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
3.2 案例实操
(1)输出该脚本文件名称、输入参数1 和 输入参数2 、输入参数3 的值
执行脚本:
脚本中设定的输入参数最多为 3 个,所以,当执行语句后的参数个数超过三个后,不再被写入。
4、特殊变量: $#
4.1 基本语法
$# (功能描述: 获取所有输入参数个数,常用于循环)
4.2 案例实操
(1)获取输入参数的个数
执行脚本:
(a)
或(b)
5、特殊变量: $* 、$@
5.1 基本语法
$* (功能描述: 这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体)
$@ (功能描述: 这个变量也代表命令行中所有的参数,不过$@ 把每个参数区分对待)
5.2 案例实操
(1) 打印输入的所有参数
执行脚本:
从执行的结果来看,$* 和$@ 好像没有什么区别,但是实际在执行过程中,$*会对输入的多个参数看成一个整体来执行,而$@则会将输入的多个参数按照顺序依次执行;在参数数量较少的情况下,两者没有什么差别。
6、特殊变量 $?
6.1 基本语法
$? (功能描述: 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是那个数,由命令自己来决定),则证明上一个命令执行不正确了。)
6.2 案例实操
(1) 判断helloworld.sh 脚本是否正确执行难
五、 运算符
1、基本语法
(1)“$((运算式))” 或 “$[运算式]”
(2)expr + , - , * , / , % 加,减,乘,除,取余
注意: expr 运算符间要有空格
2、案例实操:
(1)计算 3+2 的值
(2)计算 3-2 的值
(3)计算(2+3)X4 的值
(a) expr一步完成计算
当前表达式中, 被 “ ` ” 所包含的运算式会先执行,再结果的基础上再与外面的运算式继续执行乘的操作
(b)采用$[运算式]方式