tæller bash `shift` kommandoer ændringsargument` $ # `

Når jeg bruger kommandoen bash shift, ændrer det argumentet i $#?

Bemærkning fra forfatteren: Da jeg havde dette spørgsmål, fandt jeg det (endnu) ikke på dette samfund. Derfor prøvede jeg det simpelthen og fik mit svar. Fordi jeg troede, det kunne hjælpe andre, sendte jeg det, jeg lærte her, som et selvbesvaret spørgsmål .

Svar

Ja er gør, det kræves eksplicit i standarden :

shift [n] Positionsparametrene flyttes. Positionsparameter 1 tildeles værdien af parameteren (1 + n), […] og parameteren “#” opdateres for at afspejle det nye antal positionelle parametre.

Overvej dette script:

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

At kalde det som script-file first second third udskriver 3 efterfulgt af 2.

Dette betyder, at vi kan gøre ting som:

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

… som vil udskrive argumenterne en efter en på deres egen linje.

Kommentarer

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *