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