如何查找传递给Bash脚本的参数数量?

时间:2010-12-12 18:43:47

标签: bash arguments

如何找到传递给Bash脚本的参数数量?

这就是我目前的情况:

#!/bin/bash
i=0
for var in "$@"
do
  i=i+1
done

还有其他(更好)的方法吗?

5 个答案:

答案 0 :(得分:254)

参数的数量为$#

在此页面上搜索以了解更多信息: http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST

答案 1 :(得分:96)

#!/bin/bash
echo "The number of arguments is: $#"
a=${@}
echo "The total length of all arguments is: ${#a}: "
count=0
for var in "$@"
do
    echo "The length of argument '$var' is: ${#var}"
    (( count++ ))
    (( accum += ${#var} ))
done
echo "The counted number of arguments is: $count"
echo "The accumulated length of all arguments is: $accum"

答案 2 :(得分:7)

添加原始参考:

您可以从特殊参数$#获取参数数量。值0表示"没有参数"。 $#是只读的。

shift一起用于参数处理时,每次执行Bash Builtin $#时,特殊参数shift都会递减。

请参阅Bash Reference Manual部分中的3.4.2 Special Parameters

  • " shell专门处理几个参数。这些参数仅可参考"

  • 并在此部分中为关键字 $#"扩展为十进制的位置参数数量。"

答案 3 :(得分:0)

以下是简单的 -

cat countvariable.sh

echo "$@" |awk '{for(i=0;i<=NF;i++); print i-1 }'

输出:

#./countvariable.sh 1 2 3 4 5 6
6
#./countvariable.sh 1 2 3 4 5 6 apple orange
8

答案 4 :(得分:-4)

该值包含在变量$#