2

我是 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

$# -eq 0这个shell脚本是什么意思?

4

2 回答 2

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'
于 2013-06-09T14:58:37.433 回答
2

test解释 -eq的手册页:

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

因此 test 将查看 -eq 前后的表达式并检查它们是否相等。

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

./your_script.sh foo bar

$# 将是 2

综上所述,如果您没有使用任何参数运行脚本,则该子句 (test $# -eq 0) 将返回 true

于 2013-06-09T15:23:25.560 回答