Bashはgrepの結果に応じて「引数が多すぎる」エラーを表示しますか?

Bashはgrepの結果に応じて「引数が多すぎる」エラーを表示しますか?

だから私はマシンにバッテリーがあることを確認してから、バッテリーの有無に応じて別のコマンドを実行しようとしています。これが私が今まで持っているものです:

upower -d >> /tmp/batstat
if [ grep -F BAT0 /tmp/batstat ]; then
    echo "BAT0 PRESENT" >> /tmp/batstat
else
    echo "NO BAT0" >> /tmp/batstat
fi

ただし、期待どおりにBAT0が/ tmp / batstatに書き込まれない場合は、「bash:[:Too Many Arguments」エラーが返されます。 grepを実行するだけでうまく動作しますが、なぜif条件で動作しないのか理解できません。

バッテリーを確認するより良い方法がある場合は、100%開いています。

ベストアンサー1

if upower -d | grep -qF BAT0 ; then
   echo "BAT0 PRESENT"
else
   echo "NO BAT0"
fi

if一連のコマンドを実行し、最後のコマンド(この場合はgrep)の状態を処理します。grep一致するものがある場合はtrueを返し、そうでない場合はfalseを返します。

おすすめ記事