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


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

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

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

Оффлайн Dexel

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

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

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #1 : 15 Февраля 2017, 22:21:36 »
Чем read c таймаутом не устраивает?
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #2 : 16 Февраля 2017, 05:10:36 »
read -n1
« Последнее редактирование: 16 Февраля 2017, 05:14:42 от victor00000 »
Wars ~.o

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #3 : 16 Февраля 2017, 09:22:55 »
Код: (Bash) [Выделить]
#!/bin/bash

for i in {1..20}
do
    echo "Iteration $i"

    sleep 1s

    read -n1
done

Read ожидает ввода. Или о чём вы?

Оффлайн ReNzRv

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

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #5 : 16 Февраля 2017, 09:51:46 »
Dexel, while ! read -n1 -t10 ; do
    … your_script
done
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Dexel

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

Оффлайн ReNzRv

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

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

Пользователь добавил сообщение 17 Февраля 2017, 16:58:23:
Или так без файла может сработает:
Код: (bash) [Выделить]
bash script.sh &

echo 'Press any key for abort.'
read && kill $!
« Последнее редактирование: 17 Февраля 2017, 16:58:23 от renzrv »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #8 : 17 Февраля 2017, 17:06:18 »
Dexel, Да что Вы говорите? Поставьте меньше таймаут если такой нетерпеливый
Код: (html) [Выделить]
while ! read -n1 -t1 -s ; do echo wait ; done
wait
wait
wait
#здесь нажал
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #9 : 17 Февраля 2017, 18:05:30 »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Как в bash проверять состояние pressed any key?
« Ответ #10 : 17 Февраля 2017, 21:49:18 »
zenity --info --text="Нажми Ок"
Wars ~.o

Оффлайн Dexel

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

 

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