Как реализовать нажатие клавиш таймера в Bash? - PullRequest
1 голос
/ 22 декабря 2009

Вот что произойдет, сообщение будет отображаться с указанным временем ожидания нажатия клавиши, если нет нажатия клавиши, то оно возобновится.

Пример

"Нажмите ESC, чтобы выйти, иначе вы умрете .. 3..2..1"

«Нажмите« x », чтобы отложить и проверить электронную почту, прочитать некоторые блоги, facebook, твиттер… в противном случае вы возобновите работу в течение 12 часов .. 3..2..1»

Это должно быть очень удобной функцией. Как мне создать эту функциональность в Bash?

Ответы [ 2 ]

6 голосов
/ 22 декабря 2009

Найдите на странице man bash команду «read» и обратите внимание на опцию «-t timeout». Как-то так должно начаться

for i in 3 2 1 ; do 
    read -p $i... -n 1 -t 1 a && break
done
3 голосов
/ 22 декабря 2009

Используйте опции -t и -n встроенной команды read bash, также не забывайте -r и -s. (подробности см. в руководстве)

#!/bin/bash

timeout=3

echo -n "Press ESC to exit, otherwise you will die..."
while [ $timeout -gt 0 ]; do
    echo -n " $timeout"
    if read -n1 -t1 -r -s x; then
        echo
        exit 0
    fi
    let timeout--
done
echo
...