Ändert der Befehl bash `shift` die Argumentanzahl` $ # `

Wenn ich den Befehl bash shift verwende, Ändert dies die Anzahl der Argumente in $#?

Anmerkung des Autors: Als ich diese Frage hatte, fand ich sie (noch) nicht in dieser Community. Deshalb habe ich es einfach versucht und meine Antwort bekommen. Da ich dachte, es könnte anderen helfen, habe ich das, was ich hier gelernt habe, als eine selbst beantwortete Frage gepostet .

Antwort

Ja, ist im Standard ausdrücklich erforderlich :

shift [n] Die Positionsparameter müssen verschoben werden. Dem Positionsparameter 1 muss der Wert von Parameter (1 + n) […] zugewiesen werden, und der Parameter „#“ wird aktualisiert, um die neue Anzahl von Positionsparametern widerzuspiegeln Parameter.

Betrachten Sie dieses Skript:

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

Nennen Sie es wie script-file first second third druckt 3 gefolgt von 2.

Dies bedeutet, dass wir dies tun können Dinge wie:

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

… die die Argumente einzeln in einer eigenen Zeile drucken würden.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.