このスクリプトの出力は何ですか?

このスクリプトの出力は何ですか?
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 '

つまり

q=`expr $q + 1`

正しい使い方です

たぶん、多くのシェルがこれらの構造をサポートすることができます。

(( q++ )) # same effect as  q=`expr $q + 1`

[1](( ))設定されていない場合は、0に置き換えて処理します。q

おすすめ記事