
走ろうとしている
WID=`xdotool search "Inbox" | head -1`
xdotool windowactivate $WID
xdotool key Up
毎回stdoutの
$ CAMEL_DEBUG=all evolution
「アイドル開始」になります。
私はこのスクリプトを思いつきました。これは私が望むことを実行しますが、1 回だけ実行します。「アイドルを開始しています」と表示されるたびに実行するのではなく、1 回だけ実行して停止します。私は bash を十分に理解していないため、これを無限に繰り返すように強制することはできません。
exec 3< <(CAMEL_DEBUG=all evolution)
while read line; do
case "$line" in
*"starting idle"*)
echo "'$line' contains staring idle"
WID=`xdotool search "Inbox" | head -1`
xdotool windowactivate $WID
xdotool key Up
break
;;
*)
echo "'$line' does not contain starting idle."
;;
esac
done <&3
exec 3<&-
ありがとう。
答え1
コマンドはループbreak
を終了しますwhile
。ドロップします。
答え2
もう少し複雑なものを試すこともできます。まず、出力をevolution
ファイルにリダイレクトします。
CAMEL_DEBUG=all evolution > tmpout
while
次に、ファイルを読み取り、文字列が見つかった場合に反応する無限ループを作成します。
#!/usr/bin/env bash
while true; do
while read line; do
case "$line" in
*"starting idle"*)
echo "'$line' contains staring idle"
WID=`xdotool search "Inbox" | head -1`
xdotool windowactivate $WID
xdotool key Up
break
;;
*)
echo "'$line' does not contain starting idle."
;;
esac
done < tmpout
done