unix $#命令有什么作用?

时间:2014-05-07 20:34:21

标签: bash unix

我已阅读此页What are the special dollar sign shell variables?,但我仍然无法获得$#所做的事。

我在演讲幻灯片中有一个例子:

#!/bin/sh
echo Total no. of inputs: $#
echo first: $1
echo second: $2

我假设$#接受所有输入作为参数,我们应该期待两个输入。那是它在做什么?

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

<强> This tutorial will surely help you

答案 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