bashshell,添加数量可变的变量

bashshell,添加数量可变的变量,bash,shell,variables,Bash,Shell,Variables,我正在尝试编写一个简短的脚本,它接受可变数量的参数(也包括数字) 然后将这些参数相加,得到总数。然后获取输入的数字的平均值。 这就是我目前所拥有的 #!/bin/bash count=1 ncount=1 echo echo "please enter number of parameters: " read parano while [ $parano -ge $numbers$count ] do echo echo "Please enter parameter

我正在尝试编写一个简短的脚本,它接受可变数量的参数(也包括数字) 然后将这些参数相加,得到总数。然后获取输入的数字的平均值。 这就是我目前所拥有的

#!/bin/bash

count=1
ncount=1
echo
echo "please enter number of parameters: "
read parano

while [ $parano -ge $numbers$count ]
    do
    echo
    echo "Please enter parameter $count: "
    read number$ncount
    let count=count+1
    let ncount=ncount+1

done 

Total=$((number$ncounttotal))
Average=$((Total/parano))

echo
echo "You have chosen $parano parameters"
echo 
echo "The average is $Average"
echo
这只是计算我遇到问题的总数的一行,似乎找不到计算它的代码。其余的似乎很有效,但由于没有计算总数,平均值总是为0。 有人有什么想法吗

#!/bin/bash

[ $# -eq 0 ] && exit 1

for number in $@; do
    sum=$(($sum + $number))
done

average=$(echo "$sum / $#" | bc -l)

echo $average
那么就这样称呼它:

./shellscript 1 2 3 

我在上面使用了
bc
,因为
bash
只会做整数运算,这对平均值来说并不好。

谢谢大家的帮助。我需要的答案是前面提到的数组

#!/bin/bash

echo
echo "Please enter number of parameters: "
read parano

count=1
Total=$((0))

while [ $parano -ge $numbers$count ]
    do
    echo
    echo "Please enter parameter $count: "
    read number
    let count=count+1
    Total=$(($Total+number))

done 

Average=$((Total/parano))

echo
echo "You have chosen $parano parameters"
echo 
echo "The total is $Total "
echo
echo "The average is $Average"
echo

答案是将一个数组作为总数,并在数组中不断添加变量。至少我是这么想的。无论哪种方式都有效,谢谢大家

您正在尝试使用
$numbers$count
numbers$counttotal
动态生成变量名,但这不起作用。您可能应该使用数组,请参阅详细讨论。我感谢您的反馈和链接,我一直在查看它,但我对编程相当陌生,所以几乎所有事情都超出了我的理解。你能给我举个例子吗@BenjaminW.事实证明我错了,可以通过
read
为这样的变量赋值,但通常不能在Bash中动态生成变量名,需要间接寻址-但正如您所发现的,数组是实现这一点的方法。