¿El comando bash `shift` cambia el recuento de argumentos` $ # `

Cuando uso el comando bash shift, ¿Eso cambia el recuento de argumentos en $#?

Nota del autor: Cuando tuve esta pregunta, no la encontré (todavía) en esta comunidad. Por lo tanto, simplemente lo probé y obtuve mi respuesta. Como pensé que podría ayudar a otros, publiqué lo que aprendí aquí como una pregunta con respuesta propia .

Responder

Sí, lo hace, se requiere explícitamente en el estándar :

shift [n] Los parámetros posicionales se cambiarán. Al parámetro posicional 1 se le asignará el valor del parámetro (1 + n), […] y el parámetro «#» se actualizará para reflejar el nuevo número de posicionales parámetros.

Considere este script:

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

Llamarlo como script-file first second third imprimirá 3 seguido de 2.

Esto significa que podemos hacerlo cosas como:

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

… que imprimiría los argumentos uno por uno en su propia línea.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *