muuttaa bash ”shift” -komento argumenttilaskentaa `$ #`

Kun käytän bash shift -komentoa, muuttaakö tämä argumenttien määrää ryhmässä $#?

Kirjoittajan huomautus: Kun minulla oli tämä kysymys, en löytänyt sitä (vielä) tästä yhteisöstä. Siksi yritin yksinkertaisesti sitä ja sain vastaukseni. Koska ajattelin, että se voisi auttaa muita, lähetin oppimani tänne nimellä itse vastattu kysymys .

vastaus

Kyllä on, sitä vaaditaan nimenomaisesti standardissa :

shift [n] Sijaintiparametreja on muutettava. Paikallisparametrille 1 on määritettävä parametrin (1 + n) arvo, […] ja parametri ”#” päivitetään vastaamaan uutta parametrit.

Harkitse tätä komentosarjaa:

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

Kutsu sitä nimellä script-file first second third tulostaa 3 ja sen jälkeen 2.

Tämä tarkoittaa, että voimme tehdä esimerkiksi:

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

… joka tulostaisi argumentit yksitellen omalle rivilleen.

Kommentit

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *