argumentul de modificare a comenzii bash `shift` contează` $ # `

Când folosesc comanda bash shift modifică asta argumentul în $#?

Notă de la autor: Când am avut această întrebare, nu am găsit-o (încă) în această comunitate. Prin urmare, am încercat pur și simplu și am primit răspunsul meu. Deoarece m-am gândit că ar putea ajuta pe alții, am postat ceea ce am învățat aici ca o întrebare auto-răspuns .

Răspuns

Da este, este necesar în mod explicit în standard :

shift [n] Parametrii poziționali vor fi schimbați. Parametrul pozițional 1 va primi valoarea parametrului (1 + n), […] și parametrul „#” este actualizat pentru a reflecta noul număr de pozițional parametri.

Luați în considerare acest script:

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

Se numește ca script-file first second third va imprima 3 urmat de 2.

Acest lucru înseamnă că putem face lucruri precum:

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

… care ar imprima argumentele unul câte unul pe propria linie.

Comentarii

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *