shell中的$#-eq是什么意思

时间:2013-06-09 14:58:37

标签: shell

我是shell脚本的新手,在下面的shell脚本

#!/usr/bin/env sh
PREFIX=${PREFIX-/usr/local}
VERSIONS_DIR=$PREFIX/n/versions

test -d $VERSIONS_DIR || mkdir -p $VERSIONS_DIR

if test $# -eq 0; then

这个shell脚本中$# -eq 0的含义是什么?

2 个答案:

答案 0 :(得分:4)

$# = number of arguments. Answer is 3
$@ = what parameters were passed. Answer is 1 2 3
$? = was last command successful. Answer is 0 which means 'yes'

答案 1 :(得分:2)

test的联合帮助页解释了-eq:

 n1 -eq n2     True if the integers n1 and n2 are algebraically equal.

因此,测试将查看-eq之前和之后的表达式,并检查它们是否相等。

正如您在答案中提到的,$#是脚本的参数数量,因此如果您运行

./your_script.sh foo bar

$#将是2

将它放在一起,如果没有使用任何参数运行脚本,则该子句(test $#-eq 0)将返回true