o comando bash `shift` muda o argumento contagem` $ # `

Quando eu uso o comando bash shift, isso muda a contagem de argumentos em $#?

Nota do autor: Quando eu tinha esta pergunta, não a encontrei (ainda) nesta comunidade. Portanto, simplesmente tentei e obtive minha resposta. Porque pensei que poderia ajudar outras pessoas, postei o que aprendi aqui como uma pergunta auto-respondida .

Resposta

Sim, é, é explicitamente exigido no padrão :

shift [n] Os parâmetros posicionais devem ser alterados. Ao parâmetro posicional 1 deve ser atribuído o valor do parâmetro (1 + n), […] e o parâmetro “#” é atualizado para refletir o novo número de posições parâmetros.

Considere este script:

#!/usr/bin/env bash echo "$#" shift echo "$#" 

Chamando-o como script-file first second third imprimirá 3 seguido por 2.

Isso significa que podemos fazer coisas como:

#!/usr/bin/env bash while [[ "$#" > 0 ]] ; do echo "$1" shift done 

… que imprimiria os argumentos um por um em sua própria linha.

Comentários

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *