我的课程刚开始受到冲击,通常会很喜欢,但是一旦我们完成了一些课程,就会把扳手扔进工作中。 分配实际上是从用户那里获取任意数量的数字(使用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次不同的时间
对于任意输入任意数量的用户输入的指导非常有用
答案 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