räknar bash `shift` kommandoändringsargumentet` $ # `

När jag använder kommandot bash shift, ändrar det argumentet i $#?

Anmärkning från författaren: När jag hade den här frågan hittade jag den (ännu) inte i den här gruppen. Därför försökte jag det helt enkelt och fick mitt svar. Eftersom jag trodde att det skulle kunna hjälpa andra lade jag upp det jag lärde mig här som en självbesvarad fråga .

Svar

Ja är gör, det krävs uttryckligen i standarden :

shift [n] Positionsparametrarna ska flyttas. Positionsparameter 1 ska tilldelas parametervärdet (1 + n), […] och parametern ”#” uppdateras för att återspegla det nya antalet positionspositioner parametrar.

Tänk på det här skriptet:

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

Kallar det som script-file first second third skriver ut 3 följt av 2.

Detta betyder att vi kan göra saker som:

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

… som skulle skriva ut argumenten en efter en på sin egen rad.

Kommentarer

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *