Я пытаюсь бежать

WID=`xdotool search "Inbox" | head -1`
xdotool windowactivate $WID
xdotool key Up

каждый раз, когда выход

$ CAMEL_DEBUG=all evolution

дает "запуск холостого хода".

Я придумал этот сценарий, который делает то, что я хочу, но только один раз, он не делает это каждый раз, когда показывается "начало простоя", а только один раз и останавливается. Я не знаю 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<&-

Благодарю.

2 ответа2

0

Команда break завершает while цикла. Брось это.

0

Вы можете попробовать что-то более сложное. Сначала перенаправьте вывод 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .