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