Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Awk с циклом и sleep не завершается по Ctrl+C  (Прочитано 890 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Например печать 123 с интервалом 2сек:
Код: (bash) [Выделить]
awk 'BEGIN{intr=2; while(system("sleep "intr) == 0){print 123}}'
Код: (bash) [Выделить]
awk 'BEGIN{intr=2; for(;;){system("sleep "intr); print 123}}'
Нажатие Ctrl+C прерывает только sleep, и awk почему-то не закрывается и переходит следующей итерации:
123
123
^C123
^C123
123
123

Код завершения sleep и при нажатии Ctrl+C всегда = 0.

Без цикла все ОК, при нажатии завершается сразу:
Код: (bash) [Выделить]
awk 'BEGIN{intr=5; system("sleep "intr); print 123}'
Есть ли решение?

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Awk с циклом и sleep не завершается по Ctrl+C
« Ответ #1 : 02 Октября 2016, 23:10:03 »
Вы как туркменский комсомол: создаете проблемы и героически их решаете. Зачем решать это через awk?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Awk с циклом и sleep не завершается по Ctrl+C
« Ответ #2 : 02 Октября 2016, 23:14:06 »
Azure,
Дописываю скрипт на авке, и в нем нужен цикл с слипом.

Пользователь добавил сообщение 02 Октября 2016, 23:22:39:
Скрипт-монитор выводит инф. с инервалом и должен закрыватся из терминала по Ctrl+C,
но сейчас чтобы вырубить скрипт приходится килять авк...
« Последнее редактирование: 02 Октября 2016, 23:22:39 от renzrv »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Awk с циклом и sleep не завершается по Ctrl+C
« Ответ #3 : 02 Октября 2016, 23:28:08 »
И зачем его прерывать по Ctrl+C? И вообще, обсуждать "как преодолеть противотанковый ров" на неправильно выбранной дороге не совсем продуктивно, когда можно было вообще проехать мимо него?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Awk с циклом и sleep не завершается по Ctrl+C
« Ответ #4 : 03 Октября 2016, 00:10:51 »
Решено. Нашел такое решение:
Код: (awk) [Выделить]
BEGIN{intr=2; while(system("sleep "intr" && exit 1") != 0){print 123}}

 

Страница сгенерирована за 0.091 секунд. Запросов: 25.