Код: Выделить всё
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