Проверьте, набрал ли пользователь что-то во время выполнения скрипта - PullRequest
0 голосов
/ 28 октября 2018

Мне нужно написать скрипт, который каждые три секунды печатает% процессора, используемого пользователем или системой.Если пользователь вводит определенную строку, выходные данные должны переключаться назад и вперед.

Как я могу проверить ввод, не прерывая поток вывода?Команда чтения остановит это, у меня заканчиваются идеи.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Вы можете использовать команду чтения с параметром тайм-аута read -t.Например, приведенный ниже скрипт обнаруживает строку «cc».Вы также можете указать количество символов для чтения с помощью -N, чтобы пользователю не приходилось нажимать клавишу ввода.

flag=0
while true; do
    sleep 3
    if [[ $flag -eq 0 ]];then
      echo user
    else
      echo sys
    fi
    read -t 0.25 -N 2 input
    if [[ $input = "cc" ]] ; then
       [[ $flag -eq 0 ]] && flag=1 || flag=0
    fi
done
0 голосов
/ 28 октября 2018

Вы можете легко получить информацию к вашему сценарию, создав файлы.Похоже, ваша программа имеет цикл и сон.Почему бы не проверить наличие файла?

[ -r control.file ] && change_behavior
...