test expression - Xinrea/Learn GitHub Wiki
$# :保存程序命令行参数的数目
$? :保存前一个命令的返回码
$0 :保存程序名
$* :以("$1 $2...")的形式保存所有输入的命令行参数
$@ :以("$1""$2"...)的形式保存所有输入的命令行参数
$! :在后台运行的最后一个进程的进程ID
$$ :当前进程的进程ID(PID)
if [ $# -gt 2 ]
then echo "paranum > 2"
else echo "paranum <= 2"
fi
OR
if test $# -gt 2
then echo "paranum > 2"
else echo "paranum <= 2"
fi
要注意的是,方括号'['、']'与变量需要用空格隔开,否则会出错。
shell中有三种测试语句,分为文件测试、字符串测试、整数测试,也就是各种条件表达式,测试中并不能测试小数,虽然可以给变量赋值小数。
文件测试
-d file |当file是一个目录时,返回 True
-f file |当file是一个普通文件时,返回 True
-r file |当file是一个可读文件时,返回 True
-s file |当file文件长度大于0时,返回 True
-w file |当file是一个可写文件时,返回 True
-x file |当file是一个可执行文件时,返回 True
-p file |若文件存在并且是FIFO文件,则测试条件为真
字符串测试
Str1 = str2 | 当str1与str2相同时,返回True
Str1! = str2| 当str1与str2不同时,返回True
Str | 当str不是空字符时,返回True
-n str | 当str的长度大于0时,返回True
-z str | 当str的长度是0时,返回True
整数测试
Int1 -eq int2|当int1等于int2时,返回True
Int1 -ge int2|当int1大于/等于int2时,返回True
Int1 -le int2|当int1小于/等于int2时,返回True
Int1 -gt int2|当int1大于int2时,返回True
Int1 -ne int2|当int1不等于int2时,返回True