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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Как в bash проверять состояние pressed any key?  (Прочитано 847 раз)

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

Оффлайн Dexel

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
    • InteS
Здравствуйте.
Есть циклический скрипт. Нужно при нажатии любой клавиши выполнять exit.
Т.е. крутится, пока не нажато ничего.

Что-то похожее на INT 21 рег.C=6 BIOS, те. не отнимая ресурсов проца.
Работа делает свободным!

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 4802
  • elementaryOS 0.4 Loki, Crunch(Bunsenlabs)
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #1 : 15 Февраль 2017, 23:21:36 »
Чем read c таймаутом не устраивает?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 13831
  • Я не слышу.
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #2 : 16 Февраль 2017, 06:10:36 »
read -n1
« Последнее редактирование: 16 Февраль 2017, 06:14:42 от victor00000 »
RuTorrent
Ydisk
Душинский В.В.

Оффлайн Dexel

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
    • InteS
Re: Как в bash проверять состояние pressed any key?
« Ответ #3 : 16 Февраль 2017, 10:22:55 »
Код: Bash
  1. #!/bin/bash
  2.  
  3. for i in {1..20}
  4. do
  5.     echo "Iteration $i"
  6.  
  7.     sleep 1s
  8.  
  9.     read -n1
  10. done
  11.  

Read ожидает ввода. Или о чём вы?
Работа делает свободным!

Оффлайн renzrv

  • Старожил
  • *
  • Сообщений: 1119
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #4 : 16 Февраль 2017, 10:47:10 »
Dexel,
help read

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 4802
  • elementaryOS 0.4 Loki, Crunch(Bunsenlabs)
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #5 : 16 Февраль 2017, 10:51:46 »
Dexel, while ! read -n1 -t10 ; do
    … your_script
done
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Dexel

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
    • InteS
Re: Как в bash проверять состояние pressed any key?
« Ответ #6 : 17 Февраль 2017, 17:24:47 »
Azure, read ожидает нажатия, и пока не нажали, далее ничего не сделает.Замените "... your_script" на эхо и посмотрите
Думал в фоновом запустить read, но вроде этот рид работает сам в отдельном процессе. Хитрый этот read.
Работа делает свободным!

Оффлайн renzrv

  • Старожил
  • *
  • Сообщений: 1119
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #7 : 17 Февраль 2017, 17:51:47 »
В баше такое можно сделать по-моему только с stop файлом.
1. Скрипт твой запустить в фоне. И в нем должно проверятся есть ли файл stop или нет.
Если есть - выход.

2. В скрипте откуда запущен скрипт в фон:
echo 'Press any key for abort.'
read && touch stop

Пользователь добавил сообщение 17 Февраль 2017, 17:58:23:
Или так без файла может сработает:
Код: Bash
  1. bash script.sh &
  2.  
  3. echo 'Press any key for abort.'
  4. read && kill $!
« Последнее редактирование: 17 Февраль 2017, 17:58:23 от renzrv »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 4802
  • elementaryOS 0.4 Loki, Crunch(Bunsenlabs)
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #8 : 17 Февраль 2017, 18:06:18 »
Dexel, Да что Вы говорите? Поставьте меньше таймаут если такой нетерпеливый
Код: Text
  1. while ! read -n1 -t1 -s ; do echo wait ; done
  2. wait
  3. wait
  4. wait
  5. #здесь нажал
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 4802
  • elementaryOS 0.4 Loki, Crunch(Bunsenlabs)
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #9 : 17 Февраль 2017, 19:05:30 »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 13831
  • Я не слышу.
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #10 : 17 Февраль 2017, 22:49:18 »
zenity --info --text="Нажми Ок"
RuTorrent
Ydisk
Душинский В.В.

Оффлайн Dexel

  • Автор темы
  • Участник
  • *
  • Сообщений: 147
    • Просмотр профиля
    • InteS
Re: Как в bash проверять состояние pressed any key?
« Ответ #11 : 23 Февраль 2017, 16:58:14 »
Спасибо большущее!
Работа делает свободным!

 

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