前のケースから次の 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

PS3 メニューを再度表示せずにecho "Something went wrong"即座に実行されるコマンドに行を変更することは可能ですか?Option two

答え1

あなたが探しているのは「フォールスルー」と呼ばれるもので、bash のステートメントでは、の代わりにcaseを使ってフォールスルーが行われます。ただし、条件付きでフォールスルーすることはできません (つまり、ブロックの途中にを挿入することはできません)。常にフォールスルーし、コードが正常に実行された場合は次のようにすることをお勧めします。;&;;;&ifcontinue

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

関連情報