provede argument argumentu bash `shift` počet argumentů` $ # `

Když použiji příkaz bash shift, změní to počet argumentů v $#?

Poznámka od autora: Když jsem měl tuto otázku, nenašel jsem ji (zatím) v této komunitě. Proto jsem to prostě zkusil a dostal odpověď. Protože jsem si myslel, že by to mohlo pomoci ostatním, zveřejnil jsem to, co jsem se zde naučil, jako otázka s odpovědí na sebe .

Odpověď

Ano ano, je to ve standardu výslovně požadováno :

shift [n] Poziční parametry musí být posunuty. Pozičnímu parametru 1 bude přiřazena hodnota parametru (1 + n), […] a parametr „#“ bude aktualizován tak, aby odrážel nový počet pozičních parametry.

Zvažte tento skript:

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

Volání jako script-file first second third vytiskne 3 následovaný 2.

To znamená, že můžeme věci jako:

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

… které by tiskly argumenty jeden po druhém na jejich vlastní řádek.

Komentáře

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *