来自bash中用户输入的基本算术

时间:2018-11-18 12:48:42

标签: bash math command user-input

我的课程刚开始受到冲击,通常会很喜欢,但是一旦我们完成了一些课程,就会把扳手扔进工作中。 分配实际上是从用户那里获取任意数量的数字(使用read命令),将它们加起来并返回结果。

上一个任务包括固定数量的10个数字,我为此写了:

#!/bin/sh


echo "Please enter 10 numbers"

read num1 
read num2 
read num3 
read num4 
read num5 
read num6 
read num7 
read num8 
read num9 
read num10


result=$((num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10))


echo The result is $result 

现在这可以正常工作,但是我只知道我正在为自己/太长时间做这件事,并且认为我正在努力的任务应该来自编辑需要10个数字的脚本,显然我很想念从用户那里获取数字并将它们加在一起而不用写10次不同的时间

对于任意输入任意数量的用户输入的指导非常有用

1 个答案:

答案 0 :(得分:1)

您可以遍历提示并一次将一个数字求和。

total=0
for((i=1; i<=10; i++)); do
    read -p "Please enter a number: " -r num
    ((total+=num))
done
echo "The total is $total"

“ C风格” for循环语法是Bash扩展;如果您需要脚本可移植到POSIX sh,则可以执行类似的操作

for i in $(seq 10); do
    :

或者如果您不能依靠安装seq,那古老的笨蛋

i=1
while [ "$i" -le 10 ]; do
    :
    i=$(expr "$i" + 1)
done