[:expr: 予期しない演算子

[:expr: 予期しない演算子

シェルスクリプトを学ぶためにEdurekaビデオをフォローしていますが、問題が発生しました。

インストラクターが最初にしていたこの簡単なスクリプトを実行しましたが、すべてがうまくいきましたが、今は実行できません。

#!/bin/sh

a=0

while [ $a -lt 10 ]
do
        echo $a
        a=' expr $a + 1'
done

本当に変です。最初はうまくいきましたが、それ以降は予期しない演算子や引数が多すぎるなど、2つのエラーが発生しました。私は全体の内容を最初から4回書き直しましたが、最初に働いた部分を除いて同じでした。

私はこれがsh対bashの構文に関連している可能性があることをオンラインで読みましたが、shebangをbashに変更し、bashとして実行しても変更されませんでした。

私が間違っていることを知っている人はいますか?

ところで、KDE ​​Neonで実行しています。

PS今はそうです。


#!/bin/sh

a=0
while [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

答え1

問題は行にあります

a=' expr $a + 1'

読まなければならない

a=`expr $a + 1`

バックティック文字に特に注意してください。これはシェルにコマンドを実行し、変数を出力に設定するように指示します。

この行にエラーメッセージが表示される理由は[次のとおりです。第二ループの周りの時間は$aエラーのためリテラル文字列であり、expr $a + 1これは有効な式ではありません。

関連情報