我已经编写了这个脚本,它取一个停止和开始数字并计算其间的数字 - 无论"停止"数字是否被重新调整,我都想让它继续增加所以它一直在计数,直到ctrl + z为止按下但它没有认识到我的时间条件 - 有人可以为我纠正语法吗?
#!/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
Run Code Online (Sandbox Code Playgroud)
既然你有关于while循环的两个答案,我建议使用for循环代替:
for((i=$startvalue;i<=$stopvalue;++i)) do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
您的主要问题在于您的状况:
while (test "$startvalue" -le "$stopvalue" || "$startvalue" -ge "$stopvalue")
Run Code Online (Sandbox Code Playgroud)
$startvalue如果is (小于或等于) 或 (大于或等于) 则告诉它继续$stopvalue。$startvalue对于和的任何组合$stopvalue,其中一个将小于、等于或大于另一个。删除第二个条件,使其仅在$startvalue小于或等于 时才继续$stopvalue。
你应该这样写:
while [ "$startvalue" -le "$stopvalue" ]
Run Code Online (Sandbox Code Playgroud)
小智 5
我使用简单的 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
Run Code Online (Sandbox Code Playgroud)
while [ "$startvalue" -le "$stopvalue" -o "$startvalue" -ge "$stopvalue" ]
do
startvalue=$((startvalue+1))
echo $startvalue
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32748 次 |
| 最近记录: |