LINUX.ORG.RU

Как завершить работу shell процедуры по введенной строке?

 , ,


0

1

Запускается скрипт, выводящий каждые n секунд информацию на экран, нужно организовать выход (завершение скрипта), если будет введено слово, например quit, 2 раза.

Т.е. выход должен выполняться при введении «quit quit».

Как это сделать?

Заранее спасибо!


Т.е. выход должен выполняться при введении «quit quit».

Это жесткое условие?

Лучше лови сигнал TERM (ctrl-C), закрывай файлы ... и корректно завершай работу.

anonymous
()
Ответ на: комментарий от anonymous

Это жесткое условие?

К сожалению, жесткое.

RainJa
() автор топика
Ответ на: комментарий от Bfgeshka

Выполнять exit 0 по условию, не?

А можно немного подробнее, или с ссылками на инфу, т.к. не понятно - каким образом считывать введенную строку? С read какая-то хрень выходит.

RainJa
() автор топика
Ответ на: Выполнять exit 0 по условию, не? от RainJa

read разделяет слова по пробелам в том числе.

Читай два раза подряд 'quit' и выходи. Или настрой IFS для этого случая, чтобы пробелы не учитывал.

E ★★★
()

легче будет нажать ctrl+c, чем пользоваться «этой фичей»

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
while :; do
   echo "Output line $i"
   i=$((i+1))
   read -t 0.5 xxx
   [ "x$xxx" = "xquit quit" ] && exit 0
   sleep 0.5
done

на фоне вывода строк печатаешь quit quit<ENTER> и скрипт завершается

anonymous
()
Ответ на: комментарий от anonymous

Но надо сказать, что такой подход плох. read -t 0.1 например, будет вносить задержку 0.1сек в работу. Надо либо делать два потока, один "слушает" stdin, другой выполняет полезную работу. Или как я сразу сказал, выходить по сигналу.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.