
次のようなスクリプトがあるとします。
#!/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
を使ってフォールスルーが行われます。ただし、条件付きでフォールスルーすることはできません (つまり、ブロックの途中にを挿入することはできません)。常にフォールスルーし、コードが正常に実行された場合は次のようにすることをお勧めします。;&
;;
;&
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