¿Qué significa --) en la estructura del caso de bash?

¿Qué significa --) en la estructura del caso de bash?

He visto un fragmento de código que contiene una estructura de caso.

while true;
do
    case "$1" in
        --prepare)
            echo "prepare"
            ENV_PREPARE
            exit 0
            ;;
        --sleep)
            SLEEP_TIME=$2
            shift 2
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error!"
            exit 1
            ;;
    esac
done

¿Qué significa --) hrer en la estructura del caso de bash?

        --)
            shift
            break
            ;;

Respuesta1

No significa nada especial atacar.

El autor de ese fragmento quería hacer coincidir dos guiones por sí solos sin ningún otro carácter. Literalmente "--".

Muchas herramientas de línea de comandos de Unix, especialmente las de la herencia GNU, le permiten usar "--" como delimitador para indicar que “nada más allá de este punto debe tratarse como una opción; el resto de esta línea de comando se compone de argumentos (como una lista de nombres de archivos para un comando que actúa sobre archivos)”. De esa manera puedes, por ejemplo, eliminar un archivo llamado "--help", ingresando:

 rm -- --help

Evita rmpensar que "--help" es una opción larga para ver la declaración de ayuda. (Este es un mal ejemplo, pero creo que entiendes lo que quiero decir).

Creo que el autor de ese guión quería que "--" funcionara así en su guión.

información relacionada