Bash shell 脚本编程
#注释
#单行注释
以#开始, 从#开始直到行尾都会被当做注释
#多行注释
1  | :<<EOF  | 
EOF可以换成任意内容
#变量
#定义变量
变量名=值
注意等号前后不能有空格
1  | a=1  | 
#使用变量
读取变量的值时需要在前面添加$
1  | echo $a  | 
#修改变量
再次修改变量的值时不需要添加$
1  | a=2  | 
#只读变量
readonly 变量名
可以将一个变量设置为只读
#删除变量
unset 变量名
#数据类型
#数字 & 字符串
可以用单引号括起来也可以用双引号, 区别是单引号括起来的字符串不会转义
1  | a=1  | 
#拼接字符串
1  | greeting="hello";  | 
#获取字符串长度
1  | echo ${#msg}  | 
#截取字符串
格式见示例, 两个参数分别为起始位置和长度
1  | echo ${msg:4:3} o w  | 
#数组
数组名=(元素1 元素2 ... 元素n)
1  | a=(1 2 3)  | 
也可以单独定义数组的各个分量
1  | arr[0]=1  | 
shell 中数组的下标从 0 开始, 可以不是连续的
#读取数组元素
${数据名[下标]}
下标使用 @ 符号可以获取数组中的所有元素
1  | a=(1 2 3 4 5)  | 
#获取数组的长度
1  | echo ${#arr[@]} 或  | 
#控制流
#条件分支
1  | if condition1  | 
#循环语句
for-in 循环
1  | for index in 1 2 3 4 5; do  | 
for-i 循环
1  | for ((i=0; i<5; i++)); do  | 
while 循环
1  | i=1  | 
#调用参数
调用脚本时可以传递一些参数, 在脚本内可以通过如下转义表达式获取参数
| 参数处理 | 说明 | 
|---|---|
$# | 传递到脚本的参数个数 | 
$n | 传递到脚本的第 n 个参数, 0 为脚本文件名 | 
$* | 以一个单字符串显示所有向脚本传递的参数。 | 
$$ | 脚本运行的当前进程 ID 号 | 
$! | 后台运行的最后一个进程的 ID 号 | 
$@ | 与$*相同,但是每个参数都会带引号。 | 
$- | 显示 Shell 使用的当前选项,与 set 命令功能相同。 | 
$? | 显示最后命令的退出状态。0 表示没有错误,其他任何值表明有错误。 | 
1  | 
  |