このスクリプトを実行しようとしています。
test.sh
#!/bin/bash
BAT_LEVEL=`acpi -b |grep -Eo "[0-9]+%"|grep -Eo "[0-9]+"`
CRIT=0
if [ $BAT_LEVEL -gt $CRIT ]; then
echo "foo"
aplay ~/apert.wav
notify-send "Battery-Low"
echo "bar"
fi
上記の6行目は、notify-send "Battery-Low"
端末で期待どおりに機能します。
ただし、スクリプトが実行されると標準出力にfoo
出力されますbar
。
何が問題なのかわかりません。
答え1
一部の環境変数がありません。この変数である可能性が高いですDISPLAY
。次のことを試すことができます。
echo "foo"
DISPLAY=:0.0 notify-send "Battery-Low"
echo "bar"
これがうまくいかない場合は、スクリプトと端末でコマンドを実行して、スクリプトの内部と端末の環境を比較できますenv
。
また、スクリプトがrootとして実行されている場合は、次のことを行う必要があります。
sudo -u yourUsername DISPLAY=:0.0 notify-send 'Battery low'