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

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

Raspberry Piでbashスクリプトを使用する際に問題があります。

x='gpio -g read 22'

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

エラーはですinteger expression expected。なぜ?

答え1

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

何をしたいのか説明しませんでしたが、比較したいと思います。出力命令したgpio。これを行うには、コマンドを$()バックティック(``)で囲む必要があります。

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。変数はfoo値を持つひも commandその出力よりも。

答え2

上記の答えはほとんどの場合うまくいきますが、次のスクリプトを使用できます。

#!/bin/bash

a='foo: '
b='44494949494'

if [ ${a} -eq ${b} ]
then
   echo "a matches b"
else
   echo "a is different than b"
fi

上記の選択肢のいずれかに明示的に応答するのではなく、次のことを行います。

./test.sh: line 6: [: foo:: integer expression expected
a is different than b

スクリプトが期待どおりに機能するようにするには(値を文字列で比較するなど)、比較を次のように変更する必要があります。

if [ ${a} = ${b} ]

関連情報