计数参数

时间:2019-03-11 15:25:20

标签: shell unix awk

我写以下命令:

#!/bin/bash
echo "Enter values a and b (separate with space)"
read a b
echo $#

我想计算用户输入了多少个参数。我尝试使用$#进行计数,但输出为0

出什么问题了?我在做什么错了?

2 个答案:

答案 0 :(得分:7)

您可以使用数组读取整行并计算#个单词:

read -p "Enter values (separate with space): " -ra arr

Enter values (separate with space): abc foo bar baz 123

然后打印字数:

echo "No of words: ${#arr[@]}"

No of words: 5

答案 1 :(得分:1)

这就是我可能会做的,而无需考虑太多。使用伪c变量是很棘手的,但是我发现bash数组更加笨拙。

read -r a b c

if [[ $c ]]
then
        echo "To much arguments"
elif [[ $a && $b ]]
        echo "Correct - 2 arguments"
else
        echo "Not enough arguments"
fi