Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是$#&引用;Bash中的特殊参数意味着什么?_Bash_Shell_If Statement_Parameters - Fatal编程技术网

什么是$#&引用;Bash中的特殊参数意味着什么?

什么是$#&引用;Bash中的特殊参数意味着什么?,bash,shell,if-statement,parameters,Bash,Shell,If Statement,Parameters,我遇到了密码 if [ $# -eq 1 ]; then echo "usage: Phar ~/flashmem ~/archive" exit fi 我从未遇到过[$#eq 1]之前,我似乎找不到意义。它做什么?它扩展到十进制位置参数的数量。 (复制自manbash,在下)。该$#返回作为参数传递的参数数 #!/bin/bash echo $# 现在 这将返回3 ./testess.sh test1 test2 test3 test4 test5 这将返回5 因此,在代码

我遇到了密码

if [ $# -eq 1  ]; then
   echo "usage: Phar ~/flashmem ~/archive"
   exit
fi

我从未遇到过
[$#eq 1]之前,我似乎找不到意义。它做什么?

扩展到十进制位置参数的数量。

(复制自
manbash
,在下)。

$#
返回作为参数传递的参数数

#!/bin/bash
echo $#
现在

这将返回
3

./testess.sh test1 test2 test3 test4 test5
这将返回
5


因此,在代码中,如果
$#
等于数字1(只传递了一个参数),则执行
echo
命令。

不幸的是,编写的方式很难找到类似
$#
的内容,因为它在显示时没有
$
。所谓的“特殊参数”如
$*
$@
$#
等等都存在。Google比man(1)bash更积极地剥离符号也没有帮助。@KeithThompson:使用bash手册的版本,
$#
的第一次查找显示了所需的位置。;)@MichaelBrux:查看git的历史记录,这种更改(在描述前面添加
($)
)是在2014-10-09年的bash-20140926快照(提交30595B7D9)中进行的。这一变化出现在4.3版中。不幸的是,git历史记录并没有显示所做的更改,只显示已过时快照的名称。
./testess.sh test1 test2 test3 test4 test5