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


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

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

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

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1967
    • Просмотр профиля
Например печать 123 с интервалом 2сек:
Код: Bash
  1. awk 'BEGIN{intr=2; while(system("sleep "intr) == 0){print 123}}'
Код: Bash
  1. 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
  1. awk 'BEGIN{intr=5; system("sleep "intr); print 123}'

Есть ли решение?

Онлайн Azure

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

Оффлайн ReNzRv

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1967
    • Просмотр профиля
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

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

Оффлайн ReNzRv

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

 

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