我正在尝试编写一个接受可变数量参数(也是数字)的短脚本 然后将这些参数加在一起以获得总数。然后获得输入的数字的平均值。 这是我到目前为止所拥有的;
#!/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,因为总计没有计算。 有人有什么想法吗?
答案 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
答案是将数组作为总数并继续将变量添加到数组中。至少这就是我的想法。无论哪种方式都有效,所以谢谢大家!