一.测试
shell中测试结构有两种:test expression及[ expression ]([]与expression间各有空格)。较常用的为后一种,通常与if判断及while循环等结合使用。
1.整数测试
[ int1 -eq int2 ]:int1=int2则返回真,否则为假(同equal)
[ int1 -gt int 2 ]:int1>int2则返回真,否则为假 (同great than)
[ int1 -lt int 2 ]:int1<int2则为真,否则为假 (同less than)
[ int1 -ge int 2 ]:int1>=int2则为真,否则为假(同great equal)
[ int1 -le int 2 ]:int1<=int2则为真,否则为假(同less equal)
[ int1 -ne int 2 ]:int1!=int2则为真,否则为假(同not equal)
2.字符串测试
[ string1 = string2 ]:string1与string2相同时返回真,否则为假
[ string1 != string2 ]:string1与string2不相同时返回真,否则为假
[ string1 > string2 ]:string1排在string2之前时返回真,否则为假
[ string1 < string2 ]:string1排在string2之后时返回真,否则为假
[ -z string ]:string为空时返回真,否则为假
[ -z string ]:string为非空时返回真,否则为假
3.文件测试
[ -d file ]:文件存在且为目录时返回真,否则为假
[ -e file ]:文件或目录存在时返回真,否则为假
[ -f file ]:文件存在且为普通文件时返回真,否则为假
[ -x file ]:文件存在且为可执行文件时返回真,否则为假
[ -s file ]:文件存在且大小不为0时返回真,否则为假
[ file1 -nt file2 ]:文件1比文件2新时返回真,否则为假
[ file1 -ot file2 ]:文件1比文件2旧时返回真,否则为假
4.逻辑测试
[ ! expression ]:若expression为真,则返回假
[ expression1 -a expression2 ]:expression1与expression2同时为真,则返回真,否则为假
[ expression1 -o expression2 ]:expression1与expression2有一个为真,则返回真,否则为假
二.判断
1.if
if结构1,:
if expression ; then
command
else
command
fi
if多层判断结构:
if expression1 ;then
command1
elif expression2 ;then
command2
...
fi
2.case
case主要用于多种可能情况的分支选择。结构为:
case VAR in
var1) command1 ;;
var2) command2 ;;
var3) command3 ;;
...
*) command ;;
easc