У меня есть этот сценарий оболочки, который, как предполагается, работает обычно и останавливается, когда я нажимаю 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.
Какие-либо предложения для фиксации этого?
Я только что примерил свою систему Ubuntu 16.04, и она работает правильно.
То, что я нашел, это, если Вы используете дженерик sh
вместо bash
, это не будет работать, выделяя ошибку
read: Illegal option -t
Удостоверьтесь, что Ваш сценарий начинается #!/usr/bin/env bash
или #!/bin/bash
и нет #!/bin/sh
.