verandert bash `shift` commando argument aantal` $ # `

Wanneer ik het bash shift commando gebruik, verandert dat het aantal argumenten in $#?

Opmerking van de auteur: Toen ik deze vraag had, vond ik deze (nog) niet op deze community. Daarom heb ik het gewoon geprobeerd en kreeg ik mijn antwoord. Omdat ik dacht dat het anderen zou kunnen helpen, heb ik wat ik hier geleerd heb gepost als een zelfbeantwoorde vraag .

Antwoord

Ja zeker, dit is expliciet vereist in de standaard :

shift [n] De positionele parameters worden verschoven. Positieparameter 1 krijgt de waarde van parameter (1 + n), […] toegewezen en de parameter # wordt bijgewerkt om het nieuwe aantal positionele parameters.

Beschouw dit script:

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

Noem het als script-file first second third zal 3 afdrukken, gevolgd door 2.

Dit betekent dat we kunnen doen dingen als:

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

… die de argumenten een voor een op hun eigen regel zouden afdrukken.

Opmerkingen

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *