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} ]