teller bash `shift` kommandoendringsargument` $ # `

Når jeg bruker bash shift -kommandoen, endrer det argumentet i $#?

Merknad fra forfatter: Da jeg hadde dette spørsmålet, fant jeg det ikke (ennå) på dette samfunnet. Derfor prøvde jeg det ganske enkelt og fikk svaret mitt. Fordi jeg trodde det kunne hjelpe andre, la jeg ut det jeg lærte her som et selvsvaret spørsmål .

Svar

Ja er gjør, det kreves eksplisitt i standarden :

shift [n] Posisjonsparametrene skal forskyves. Posisjonsparameter 1 skal tildeles verdien av parameteren (1 + n), […] og parameteren «#» oppdateres for å gjenspeile det nye antallet posisjoner parametere.

Vurder dette skriptet:

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

Kaller det som script-file first second third vil skrive ut 3 etterfulgt av 2.

Dette betyr at vi kan gjøre ting som:

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

… som vil skrive ut argumentene en etter en på sin egen linje.

Kommentarer

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *