如何找到传递给Bash脚本的参数数量?
这是我目前拥有的:
#!/bin/bash
i=0
for var in "$@"
do
i=i+1
done
还有其他(更好)的方法吗?
如何找到传递给Bash脚本的参数数量?
这是我目前拥有的:
#!/bin/bash
i=0
for var in "$@"
do
i=i+1
done
还有其他(更好)的方法吗?
Answers:
参数的数量是 $#
在此页面上搜索以了解更多信息:http : //tldp.org/LDP/abs/html/internalvariables.html#ARGLIST
argc
在C的语言,$#
会0
如果没有传递到脚本的参数,1
如果有一个参数,等等
#!/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"
bc
或其他方式(ksh93和zsh也可以进行小数运算)。您的代码包含一些变量的美元符号,但不包含其他变量。是否使用它们应该保持一致。内部(())
没有必要。但是,它们在echo
语句中。
以下是简单的-
猫计数变量
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
echo "$@" | awk '{print NF}'
i+1
在变量i
中。