Bash shell,添加可变数量的变量

时间:2016-10-22 22:16:57

标签: 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 $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,因为总计没有计算。 有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

#!/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只会进行整数运算,而且平均值不是很好。

答案 1 :(得分:0)

谢谢你的帮助。我需要的答案就是所提到的阵列。

#!/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

答案是将数组作为总数并继续将变量添加到数组中。至少这就是我的想法。无论哪种方式都有效,所以谢谢大家!