バッテリーの状態を確認し、バッテリーが不足しているときにノートブックを一時停止するコマンドを作成しようとしています。私は次のようなものを使用しようとしています:
#!/bin/bash
if [ $(acpi -b | cut -c 25) < 11 ]
then notify-send "Hello"
fi
これはうまくいきますが、何らかの理由で11を5などの1桁の数字に置き換えるとエラーが発生します。
battery-notify-standby: line 2: 5: No such file or directory
また、算術式として指定するために、角かっこを2つの丸括弧で置き換えてみました。それから私は得ます
battery-notify-standby: line 2: ((: < 11 : syntax error: operand expected (error token is "< 11 ")
正確に何が間違っているのかわかりません。誰でも私を助けることができますか?
答え1
シェルの演算子は、<
比較演算子ではなくリダイレクト演算子です。名前の付いたファイルがあって11
読みやすく正しく動作するようです。 (ただし、出力確認とは何の関係もありません。常に仮定を確認してください!)
探している比較演算子は-lt
ありません<
。
答え2
コマンドにエラーがあるようです$(acpi -b | cut -c 25)
。[ ]
エラーは、次の変更時に(( ))
空白を生成するコマンドと同じです。
bash -c '(( < 11))'
bash: line 1: ((: < 11: syntax error: operand expected (error token is "< 11")