Я добавил ловушку в свой сценарий bash, поэтому при нажатии CTRL+C появляется сообщение Do you want to quit ? (y/n)
Это работает в большинстве частей сценария, но не работает в других.
Я создал простой пример, который показывает, что он всегда терпит неудачу.
#!/bin/bash
quit() {
echo "Do you want to quit ? (y/n)"
read ctrlc
if [ "$ctrlc" = 'y' ]; then
exit
fi
}
trap quit SIGINT
trap quit SIGTERM
while true; do
echo -e "\n\e[91mIs everything done ? (y/n)\e[0m"
read -i "y" -e yn
case $yn in
[Nn]* ) continue;;
[Yy]* )
echo -e "Done"
break;;
* ) echo -e "\e[91mPlease answer yes or no.\e[0m";;
esac
done
Почему, когда я нажимаю CTRL+C, это всплывает Do you want to quit ? (y/n)
, но не позволяет мне выйти? Как мне это решить?
Спасибо
-e
. Добавьте-e
к чтению в ловушке - person William Pursell   schedule 10.05.2019exit
рассматривается как синонимreturn
и не завершает программу. Есть ли какое-то специальное разрешение для функций, вызываемых ловушкой? - person Paul Hodges   schedule 10.05.2019#!/bin/bash
шебангом? Потому что это не сработает и станет просто комментарием. - person Paul Hodges   schedule 10.05.2019