Bash read не ждет в цикле whileLinux

Ответить
Anonymous
 Bash read не ждет в цикле while

Сообщение Anonymous »

Код: Выделить всё

echo_wait() {
echo ""
echo "$1"
echo Wcisnij [Enter], aby kontynuowac...
# shellcheck disable=SC2034
# shellcheck disable=SC2162
read tmp
}

ask_question() {
echo "$1"
it=0
while true; do
echo "Odpowiedz [Tt/Nn]:"
# shellcheck disable=SC2162
read answer
case "$answer" in
[Tt]) return 1 ;;
[Nn]) return 0 ;;
*)
echo "Invalid input: $(string_to_hex "$answer")"
it=$((it + 1))
if [ "$it" -ge 10 ]; then
echo_wait "Too many invalid inputs. Exiting."
exit 1
fi
;;
esac
done
}
Этот код при вызове «ask_question» не будет ждать ввода пользователя в строке ответа на чтение, а вместо этого будет писать в цикле «Неверный ввод: [ничего]». . Что для меня странно, так это то, что затем он будет ждать Enter в строке чтения tmp. Это все время работало так, как и ожидалось, я не знаю, что я изменил, чтобы оно вдруг заработало так... сценарий запускается на Raspberry Debian, а клавиатура отключается и подключается через USB во время выполнения сценария. run (по задумке, я не думаю, что он что-то делает, но решил упомянуть), и запускается таким образом из другого скрипта:

Код: Выделить всё

echo "Running $target/$file with job $job"
"$target/$file" "$job" &
Когда я просто запускаю его напрямую, проблем не возникает, но мне нужно, чтобы этот скрипт запускался именно так.

Подробнее здесь: https://stackoverflow.com/questions/793 ... while-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»