私はカスタムスクリーンセーバー用の簡単なbashスクリプトを書こうとしています。アイドル状態であれば画面が黒くなり、そうでなければ正常に戻ります。予期せず評価する条件
#!/bin/bash
#sets display gamma very low, for screensaver purposes
idle=false
idle_after=3000 #in milliseconds
while true; do
#if system is idle
if [[ idle_now=$(xprintidle) -gt "$idle_after" && "$idle"=false ]] ;then
echo "1"
`xrandr --output HDMI-0 --brightness 0.01`
idle=true
fi
if [[ idle_now=$(xprintidle) -lt "$idle_after" && "$idle"=true ]] ; then
echo "2"
`xrandr --output HDMI-0 --brightness 1` #set screen back to normal
exit
fi
done
2番目のifクエリが最初に実行される理由はわかりません。 私はアイドル変数が起動時に "false"で初期化されていると思った 誰かが私にこれを説明することができますか?誰かが改善の余地があるなら私は非常に感謝します。ありがとう
条件文での問題に加えてhttp://www.shellcheck.net/ –
によって識別されるスクリプトといくつかの基本的な問題があり、 'xrandr'コマンドの前後に逆引用符があるのはなぜですか?それはコマンドの出力(もしあれば)をとり、それをコマンドとして実行しようとします...そして、私はそれが 'xrandr'の仕組みではないと思います。 –