Остановите сценарий оболочки путем нажатия кнопки

У меня есть этот сценарий оболочки, который, как предполагается, работает обычно и останавливается, когда я нажимаю q кнопку:

while true; do
    echo "hello"
    read -t 0.25 -N 1 input
    if [[ $input = "q" ]] || [[ $input = "Q" ]]; then
        break 
    fi
done

Когда я выполняю его, я получаю этот вывод, который продолжает отображаться непрерывно:

hello
script.sh: 3: read: Illegal option -t
script.sh: 4: script.sh: [[: not found
script.sh: 4: script.sh: [[: not found

Но когда я нажимаю на q кнопке, она не останавливается. Это продолжает бежать, пока я не останавливаю его использование Ctrl + c.
Какие-либо предложения для фиксации этого?

0
задан 25 September 2018 в 08:12

1 ответ

Я только что примерил свою систему Ubuntu 16.04, и она работает правильно.

То, что я нашел, это, если Вы используете дженерик sh вместо bash, это не будет работать, выделяя ошибку

read: Illegal option -t

Удостоверьтесь, что Ваш сценарий начинается #!/usr/bin/env bash или #!/bin/bash и нет #!/bin/sh.

3
ответ дан 27 October 2019 в 10:07

Другие вопросы по тегам:

Похожие вопросы: