该脚本的输出是什么?

该脚本的输出是什么?
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

相关内容