shell编程(一)
变量基础知识
变量根据作用域可以划分为三种:
- 本地变量:仅当前shell有效(即当前bash进程)。
- 环境变量:当前shell及其子shell(即当前bash进程即其子bash进程)。
- 局部变量:在某部分代码片段中有效(例如函数)。
除了上述三种,还有位置参数变量和特殊变量:
- 位置参数变量:用于传参给shell脚本或者函数的变量,例如${1}、${2}等。
- 特殊变量:在shell中具有特殊含义的变量,例如$?、$-等。
本地变量
name=wrz
echo $name
set于unset
查看变量
set | grep "^name"
取消变量
unset name
为什么说是本地变量?
举例说明
查看一下进程id变化
我们原本在PID为2035的shell(bash进程)中,在当前shell设置了变量name并且可获取其值,随后使用bash命令进入了子shell(PID为2148的bash进程)中再获取这个变量,就获取不到了。
如果我们使用exit命令退回刚才的父shell,就又可以获取到该值。
结论
本地变量的生命周期,从创建的时候开始,直到所在的bash进程结束(比如使用exit)或者变量被unset。
环境变量
export age=22
不论在哪个bash进程 都可以获取到的
多命令执行
|
; 分号,命令按顺序执行,执行完第一个再执行第二个,后一个命令的执行与否与前一个命令的执行成功与否无关。 && 逻辑与,只有当COMMAND1执行成功的时候,才执行COMMAND2。 || 逻辑或,只有当COMMAND1执行失败的时候,才执行COMMAND2。 |
算数运算
1 内置命令let
let arg [arg ...]
[root@docker135 ~]# num1=22
[root@docker135 ~]# num2=33
[root@docker135 ~]# let sum=$num1+$num2
[root@docker135 ~]# echo $sum
55
[root@docker135 ~]#
2 Bash算术展开
$(( ARITHMETIC EXPRESSION ))
[root@docker135 ~]# sum1=$(($num1+$num2))
[root@docker135 ~]# echo $sum1
55
[root@docker135 ~]#
3 外部命令expr
[root@docker135 ~]# sum3=$(expr $num1 + $num2)
[root@docker135 ~]# echo $sum3
55
[root@docker135 ~]#
通常使用第二种来运算