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 测试文件对当前用户是否有执行权限


字符测试

== :测试字符串string1是否与字符串string2相同

!= :测试字符串string1是否与字符串string2不相同

>

<

-n: 测试字符串是否为空

-z: 测试字符串是否为非空


命令间逻辑

逻辑与:&&

逻辑非:!

逻辑或:||


条件判断,控制结构

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 #可查看每个语句的执行结果,来检查错误。