Скажем, у меня есть сценарий как это:
#!/bin/bash
PS3='Select option: '
options=("Option one" "Option two")
select opt in "${options[@]}"
do
case $opt in
"Option one")
# few lines of code
if [ "check that code did everything it was supposed to do" ]
then
echo "Completed"
else
echo "Something went wrong"
fi
;;
"Option two")
# more code
;;
esac
done
Теперь это возможный изменить строку echo "Something went wrong"
управлять, чтобы немедленно работал Option two
не показывая меню PS3 снова?
То, что Вы ищете, называют, "проваливаются", и в ударе case
операторы, проваливаются, сделан с помощью ;&
вместо ;;
. Однако Вы не можете условно провалиться (то есть, Вы не можете вставить ;&
посреди if
блок). Я предлагаю, чтобы Вы всегда проваливались, и continue
если код, выполненный успешно:
case $opt in
"Option one")
# few lines of code
if [ "check that code did everything it was supposed to do" ]
then
echo "Completed"
continue
else
echo "Something went wrong"
fi
;&
"Option two")
# more code
;;
esac