Можно ли запустить следующий корпус PS3 из предыдущего корпуса?

Можно ли запустить следующий корпус PS3 из предыдущего корпуса?

Допустим, у меня есть такой скрипт:

#!/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?

решение1

То, что вы ищете, называется "fall-through", и в caseоператорах bash fall-through выполняется с использованием ;&вместо ;;. Однако вы не можете выполнить условный fall-through (то есть вы не можете вставить a ;&в середину блока if). Я предлагаю вам всегда выполнять fall-through, и 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

Связанный контент