web-dev-qa-db-ja.com

Bashスクリプトエラー:整数式が必要です

Raspberry Piのbashスクリプトに問題があります。

x='gpio -g read 22'

if [ $x -ge 1 ]
then
gpio -g write 23 1
fi

エラーはinteger expression expected。どうして?

6
user124824

これは、文字列_gpio -g read 22_が1より大きいかどうかを確認しているためです。_gpio -g read 22_は数値ではないため、エラーが発生します。

あなたは何をしようとしているのか説明していませんが、gpioコマンドのoutputを比較したいと思います。そのためには、コマンドを$()またはバックティック(_``_)で囲む必要があります。

_x=$(gpio -g read 22)

if [ "$x" -ge 1 ]
then
   gpio -g write 23 1
fi
_

または、もっと簡単に:

_[ "$(gpio -g read 22)" -ge 1 ] && gpio -g write 23 1
_

割り当て_foo='command'_はcommandを実行しません。変数foostringcommandの値を受け取り、その出力を受け取りません。

11
terdon