В приведенном ниже сценарии, который предлагает пользователю подтвердить, что он хочет продолжить выполнение потенциально плохого сценария, - когда пользователь входит Y
в запрос - он выйдет из case
блока, только для while
повторной отправки в цикл.
#! /bin/bash
set -e
echo
echo "bad install start"
echo "-----------------------------------------"
while true; do
read -p "this script will probably fail - do you want to run anyway?" yn
case $yn in
[Yy]*)
##### WHAT GOES HERE?? #####
;;
[Nn]*)
exit ;;
*)
echo "answer y or n" ;;
esac
echo "script has broken out of case back into while loop"
done
echo -e "\e[33m Installing bad packagename \e[0m"
apt-get install sdfsdfdfsd
echo "rest of script - will i keep running?"
Когда n
введено, сценарий существует полностью, как требуется. Я хотел бы знать, как сделать так, чтобы при Y
вводе скрипт разрывался как с блоком while, так case
и с блоком while, но не завершался полностью. Есть ли что-то, что я могу вставить для заполнителя («Что здесь происходит?»), Чтобы сделать это?
Вы отредактировали свой код с тех пор, как я впервые ответил, но обратите внимание, что в любом случае это
—
дхаг
$TEST=1
должно быть TEST=1
, и ваш сценарий, скорее всего, будет работать с этим изменением.
да, да, я видел это при тестировании!
—
the_velour_fog
@dhag Я думаю, я улучшил твои правки - пожалуйста, взгляни. Кажется, ваша цель состоит в том, чтобы переписать код так, чтобы ваш принятый ответ хорошо соответствовал, и я думаю, что теперь он ближе.
—
Дероберт
@derobert: Ваше редактирование выглядит хорошо для меня; это, безусловно, проясняет вопрос.
—
дхаг
[Yn]*)
; ты наверное имел ввиду[Yy]*)
.