Я добавил следующее в начало моего bash-скрипта:
quit() {
echo "Do you want to quit ? (y/n)"
read n
if [ "$n" = 'y' ]; then
exit
fi
}
trap quit INT
trap quit SIGINT
trap quit SIGTERM
Сценарий задает пользователю ряд вопросов, а затем выполняет действия на основе результатов.Иногда кажется, что нажатие CTRL + C работает.
Но иногда я просто получаю Do you want to quit ? (y/n)
, и скрипт блокируется.Это может произойти, когда в операторе IF или в WHILE / DONE.
Но, похоже, если вы примете время CTRL + C, когда произойдет эхо, я смогу решить проблему .. т.е.: CTRL + C водновременно с эхом.
Есть ли способ всегда перехватывать CTRL + C и запрашивать пользователя?затем позвольте им решить, хотят ли они выйти или нет?
Этот код показывает, что проблема возникает ..
quit() {
echo "Do you want to quit ? (y/n)"
read n
if [ "$n" = 'y' ]; then
exit
fi
}
trap quit INT
trap quit SIGINT
trap quit SIGTERM
for i in `seq 1 50`; do
sleep 1
echo -e "........"
read -i "0000" -e site
done
Попробуйте назначить CTRL + C точно так же, как '........ 'и 0000 показывают на экране, и проблема возникает.
Кажется, это имеет большое значение.
quit() {
while read -e -t 0.1; do : ; done
read -p "Do you want to quit ? (y/n) " n
if [ "$n" = 'y' ]; then
exit
fi
}
Я изо всех сил пытаюсь сделать это сейчас.
Спасибо