O que --) significa na estrutura de caso do bash?

O que --) significa na estrutura de caso do bash?

Eu vi um trecho de código contendo uma estrutura 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

O que --) significa hrer na estrutura de caso do bash?

        --)
            shift
            break
            ;;

Responder1

Isso não significa nada de especial para bater.

O autor desse trecho queria combinar dois hífens sozinhos, sem quaisquer outros caracteres. Literalmente "--".

Muitas ferramentas de linha de comando Unix, especialmente da herança GNU, permitem usar "--" como delimitador para significar “nada além deste ponto deve ser tratado como uma opção; o resto desta linha de comando é composta de argumentos (como uma lista de nomes de arquivos para um comando que atua sobre arquivos)”. Dessa forma você pode, digamos, excluir um arquivo chamado "--help", digitando:

 rm -- --help

Isso evita rmpensar que "--help" é uma opção longa para ver a instrução de ajuda. (Este é um exemplo ruim, mas acho que você entendeu o que quero dizer.)

Acho que o autor desse roteiro queria fazer "--" funcionar assim em seu roteiro.

informação relacionada