$#在shell中是什么意思?


25

$#在外壳中是什么意思?

我有这样的代码

if [ $# -eq 0 ]
then

我想了解什么$#意思,但是Google搜索对于搜索这类东西非常不利。


3
对于带有标点符号的搜索,我喜欢使用symbolhound.com。通常会找到我需要的东西。
埃里克·安德列斯

您可以浏览 手册
miracle173

为了获得更好的引用和SEO,请使用bang,数字符号,尖锐,U + 0023,&#35 ;、注释符号和美元!
克莱门特

Answers:


37

您始终可以检查外壳的手册页。man bash说:

Special Parameters
   #      Expands to the number of positional parameters in decimal.

因此,shell脚本可以检查通过以下代码给出的参数数量:

if [ "$#" -eq 0 ]; then
  echo "you did not pass any parameter"
fi

@NoName您man几乎可以执行任何操作,包括man它本身。也尝试apropos一些时间。
CVn 2014年

@NoName您还可以在将GNU工具(Linux等)info用于OS 的手册页或附加信息(非常详细和分隔)时使用(如果软件包包含某些信息的话)
Olivier Dulac 2014年

12

其实,

`$` refer to `value of` and
`#` refer to `number of / total number`

所以在一起

`$#` refer to `The value of the total number of command line arguments passed.`

因此,您可以$#像检查操作一样检查传递的参数/参数的数量,并处理所有意外情况。

同样,我们有

`$1` for `value of 1st argument passed`
`$2` for 'value of 2nd argument passed`

等等


8

那是

  1. 调用脚本所使用的参数数量

  2. 在脚本中通过以下方式设置的参数数量 set -- foo bar

  3. (在函数中使用时)已调用函数的参数数量(set也可以在其中使用)。

这在bash手册页的“特殊参数”中进行了说明。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.