我已阅读此页What are the special dollar sign shell variables?,但我仍然无法获得$#
所做的事。
我在演讲幻灯片中有一个例子:
#!/bin/sh
echo Total no. of inputs: $#
echo first: $1
echo second: $2
我假设$#接受所有输入作为参数,我们应该期待两个输入。那是它在做什么?
答案 0 :(得分:4)
如脚本所示:它传递给脚本的命令行参数总数。
如果您的脚本名称为:kl.sh
执行
./kl.sh hj jl lk
甚至bash kl.sh hj jl lk
在脚本中你正在做
echo $#
它会打印3
其中
$1 is hj
$2 is jl
$3 is lk
答案 1 :(得分:3)
$#
是一个特殊的内置变量,它保存传递给脚本的参数数量。
使用建议的代码:
#!/bin/sh
echo Total no. of *arguments*: $#
echo first: $1
echo second: $2
如果将此脚本保存到文件,例如printArgCnt.sh,并设置了printArgCnt.sh的可执行权限,那么我们可以使用$#来预期以下结果:
>> ./printArgCnt.sh A B C
Total no. of *arguments*: 3
first: A
second: B
>> ./printArgCnt.sh C B A
Total no. of *arguments*: 3 (<-- still three...argument count is still 3)
first: C
second: B