il comando bash `shift` cambia argomento conteggio` $ # `

Quando uso il comando bash shift, questo cambia il conteggio degli argomenti in $#?

Nota dellautore: Quando ho ricevuto questa domanda non lho (ancora) trovata in questa comunità. Quindi lho semplicemente provato e ho ottenuto la mia risposta. Poiché ho pensato che potesse aiutare gli altri, ho pubblicato ciò che ho imparato qui come una domanda con risposta personale .

Risposta

Sì, è esplicitamente richiesto nello standard :

shift [n] I parametri posizionali devono essere spostati. Al parametro posizionale 1 deve essere assegnato il valore del parametro (1 + n), […] e il parametro “#” viene aggiornato per riflettere il nuovo numero di parametri.

Considera questo script:

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

Chiamalo come script-file first second third stamperà 3 seguito da 2.

Questo significa che possiamo farlo cose come:

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

… che stamperà gli argomenti uno per uno sulla propria riga.

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *