q=3
while q = 3
do
echo blah
q=‘expr $q + 1‘
done
我正在准备考试,突然遇到这个问题。我对输出是什么感到困惑。
我认为输出会出现错误。原因是“while q = 3”应该改为“while q -eq 3”。
如果有人能给我很好地解释这段代码,那将非常好且有帮助。
谢谢。
答案1
while q = 3
没有任何意义。也许你的目的是检查 q 是否为 3。那么你应该这样做
while [ "$q" -eq 3 ] # or better while (( q == 3 )). See [1]
另请注意
while q=3 #No spaces around = during assignment.
do
#stuff
done
语法上也是正确的,但逻辑上是错误的。
另请注意,
q=‘expr $q + 1‘ # that should have been backticks ` instead of single quote '
IE
q=`expr $q + 1`
是正确的用法
也许现在很多 shell 都支持这样的结构
(( q++ )) # same effect as q=`expr $q + 1`
[1]将通过将其替换为零(( ))
来处理未设置的情况q