我写了这个脚本,它取一个停止和开始数字,并计算出两者之间的数字 - 无论“停止”数字是否被重新调整,我都想让它继续增加,所以它一直在计数直到ctrl + z被按下但是它没有识别出我的while条件 - 有人可以为我纠正语法吗?
#!/bin/sh
stopvalue=$1
startvalue=$2
if [ $# -ne 2 ]
then
echo "Error - You must enter two numbers exactly - using default start value of 1"
#exit 0
fi
echo ${startvalue:=1}
while (test "$startvalue" -le "$stopvalue" || "$startvalue" -ge "$stopvalue")
do
startvalue=$((startvalue+1))
echo $startvalue
done
答案 0 :(得分:7)
既然你有关于while循环的两个答案,我建议改为使用for
循环:
for((i=$startvalue;i<=$stopvalue;++i)) do
echo $i
done
答案 1 :(得分:3)
你的主要问题在于你的情况:
while (test "$startvalue" -le "$stopvalue" || "$startvalue" -ge "$stopvalue")
如果$startvalue
是(小于或等于)或(大于或等于)$stopvalue
,则告诉它继续。对于$startvalue
和$stopvalue
的任何组合,该组合将小于,等于或大于另一个。{1}}和$startvalue
。取出后半部分只有在$stopvalue
小于或等于while [ "$startvalue" -le "$stopvalue ]
时才会继续。
你应该写下来:
{{1}}
答案 2 :(得分:3)
我使用简单的while循环程序。哪个适合我。根据我的理解,在传递while循环中的任何变量之前,我们必须声明它:
sum=0
temp=1
while [ $temp -ne 0 ]
do
echo "Enter number: OR 0 to Quit :"
read temp
sum=`expr $sum + $temp`
done
echo $sum
答案 3 :(得分:0)
while [ "$startvalue" -le "$stopvalue" -o "$startvalue" -ge "$stopvalue" ]
do
startvalue=$((startvalue+1))
echo $startvalue
done