我是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
的含义是什么?
答案 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