
Ich schreibe Debootstrap neu, damit es zu mir passt und für die Ausbildung. Warum der Befehl „shift“ im Interaktionscode in der Datei „functions“? Es werden nicht so viele Argumente gesendet, um „shift“ zu verwenden, und meines Wissens sind Funktionsargumente nur in der Funktion zugänglich.
Beispiel:
error () {
# <error code> <name> <string> <args>
local err="$1"
local name="$2"
local fmt="$3"
shift; shift; shift
if [ "$USE_DEBIANINSTALLER_INTERACTION" ]; then
(echo "E: $name"
for x in "$@"; do echo "EA: $x"; done
echo "EF: $fmt") >&4
else
(printf "E: $fmt\n" "$@") >&4
fi
exit $err
}
Antwort1
Die drei Verschiebungen entfernen den Fehlercode, den Namen und die Zeichenfolge aus den Argumenten, sodass die restlichen Argumente bequem $@
für die for
Schleife in Zeile neun des Skripts verfügbar sind.