¿Es posible ejecutar el siguiente caso de PS3 desde el caso anterior?

¿Es posible ejecutar el siguiente caso de PS3 desde el caso anterior?

Digamos que tengo un script como este:

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

¿Ahora es posible cambiar la línea echo "Something went wrong"a un comando que se ejecute instantáneamente Option twosin volver a mostrar el menú de PS3?

Respuesta1

Lo que estás buscando se llama "fall-through", y en caselas declaraciones de bash, el fall-through se realiza usando ;&en lugar de ;;. Sin embargo, no puede fallar condicionalmente (es decir, no puede insertar un ;&en medio de un ifbloque). Le sugiero que falle siempre, y continuesi el código se ejecutó correctamente:

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

información relacionada