我在名为instance的文件中有一个脚本:
echo "hello world"
echo ${1}
当我使用以下命令运行此脚本时:
./instance solfish
我得到以下输出:
hello world
solfish
但是当我跑步时:
echo $#
它说“ 0”。为什么?我不明白这$#
是什么意思。
请解释一下。
$#
是in中的一个特殊变量bash
,它扩展为参数(位置参数)的数量,即$1, $2 ...
,如果参数直接传递给外壳,例如in中,则传递给相关脚本或外壳bash -c '...' ....
。
这与argc
C中相似。
也许这可以使您清楚:
$ bash -c 'echo $#'
0
$ bash -c 'echo $#' _ x
1
$ bash -c 'echo $#' _ x y
2
$ bash -c 'echo $#' _ x y z
3
请注意,bash -c
在从0开始的命令后面接受参数(从$0
技术上讲,这只是bash
让您设置的方法$0
,实际上不是参数),因此_
在这里用作占位符;实际参数是x
($1
),y
($2
)和z
($3
)。
同样,在脚本中(假设script.sh
),如果您具有:
#!/usr/bin/env bash
echo "$#"
然后,当您这样做时:
./script.sh foo bar
该脚本将输出2; 同样地,
./script.sh foo
将输出1。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句