la commande bash `shift` change-t-elle le nombre darguments` $ # `

Quand jutilise la commande bash shift, cela change-t-il le nombre darguments dans $#?

Note de lauteur: Quand jai eu cette question, je ne lai pas (encore) trouvée sur cette communauté. Par conséquent, jai simplement essayé et jai obtenu ma réponse. Parce que je pensais que cela pourrait aider les autres, jai publié ce que jai appris ici sous la forme une question à réponse individuelle .

Réponse

Oui, cest explicitement requis dans la norme :

shift [n] Les paramètres de position doivent être décalés. Le paramètre de position 1 se voit attribuer la valeur du paramètre (1 + n), […] et le paramètre «#» est mis à jour pour refléter le nouveau nombre de paramètres.

Considérez ce script:

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

En lappelant comme script-file first second third affichera 3 suivi de 2.

Cela signifie que nous pouvons le faire des choses comme:

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

… qui afficherait les arguments un par un sur leur propre ligne.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *