shell脚本可以看做是命令的堆砌,通过结合命令流程控制机制实现。
解释器 #!/bin/bash或/usr/bin/python 也称为shebang
一般脚本需要赋予执行权限,也可以使用bash xxx.sh 来事先声明
shell的条件判断可以分为
1:整数测试
2:字符串测试
3:文件测试
条件测试表达式
[ expression ] #注意方括号与表达式之间有空格
[[ expression ]] #也有这种格式的测试格式
test expression
整数比较
-eq:两个整数是否相等 #equal
-ne:两个整数是否不等 #not equal
-gt:前一个数是否大于后一个数
-lt:前一个数是否小于后一个数
-ge:前一个数是否大于等于后一个数
-lt:前一个数是否小于等于后一个数
文件测试:
-e /path/to/file :测试文件是否存在
例如:[ -e /etc/inittab ] [ ! -e /etc/inittab ]
-d /path/to/file :测试是否为目录
-f /path/to/file :测试是否为普通文件
-r /path/to/file 测试文件对当前用户是否有读权限
-w /path/to/file 测试文件对当前用户是否有写权限
-x /path/to/file 测试文件对当前用户是否有执行权限
命令间逻辑
逻辑与:&&
逻辑非:!
逻辑或:||
条件判断,控制结构
if 判断条件;then #单分支
statement1
statement2
...
fi
if 判断条件;then
statement
...
else
statement
...
fi
算数运算
算数运算表达式:
1:let 算术运算表达式 例:let c=$A+$B
2:$[算术运算表达式] 例:C=$[$A+$B]
3:$((算数运算表达式)) 例:C=$(($A+$B))
4:expr 算数运算表达式 #表达式中各操作数和运算符之间要有空格,而且要使用命令引用
例:C=`expr $A + $B`
在脚本中使用exit 可以退出当前shell
exit # 自定义返回状态值
#如果脚本没有定义状态退出码,最后一条命令的退出码即为脚本退出码
多分支if语句
if 判断条件;then
statement
...
elif 判断条件2;then
...
...
else
...
fi
测试脚本
bash -n xxx.sh #简单检查脚本语法错误。
bash -x xxx.sh #可查看每个语句的执行结果,来检查错误。