O que significa -) na estrutura do case do bash?

1

Eu vi um snippet 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 do caso de bash?

        --)
            shift
            break
            ;;
    
por scrapy 06.08.2018 / 02:42

1 resposta

4

Isso não significa nada de especial para bater.

O autor desse trecho queria combinar dois hífens sem nenhum outro caractere. Literalmente "--".

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

 rm -- --help

Ele mantém rm de pensar que "--help" é uma opção longa para ver a instrução de ajuda. (Este é um exemplo ruim, mas acho que você entende o que quero dizer.)

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

    
por 06.08.2018 / 04:21

Tags