Veröffentlicht 8. Dezember 200321 j Hi @all, kann mir mal jeman erklären, was das SHIFT genau macht ??? Ich hab das noch nicht so ganz vertsanden ...
8. Dezember 200321 j Hallo, Um auf die Argumente eines Shell-Skriptes zugreifen zu können, kannst Du mit $0, $1 ... $9 usw. arbeiten ($0 ist der Name des Skriptes). Dies funktioniert allerdings nur bis $9, möchtest Du auf ein weiteres Argument zugreifen, so kannst Du mit SHIFT arbeiten. "shift 1" verschiebt die Argumente um eins nach links, d.h. $1 wird zu $2, $2 zu $3 usw. Dies erlaubt Dir, mehr als neun Argumente zu verarbeiten. Nic
9. Dezember 200321 j Achso, jetzt verstehe ich ... Aber wieso wird in diesem Skript einen SHIFT benutzt ... if [ "$1" == "-t" ] ; then test="yes" [COLOR=red]shift 2[/COLOR] fi while [[ $1 == -* ]] do case "$1" in -u) uid="$2" ;; -g) gid="$2" ;; -G) sgids="$2" ;; -d) home="$2" ;; -c) com="$2" ;; -s) shell="$2" ;; -k) profdir="$2" ;; *) echo "Optionen: -ugGdcsk (man useradd)" && exit 1 ;; esac [COLOR=red]shift 2[/COLOR] done
9. Dezember 200321 j Noch eine frage: Wie ist das eigentlich, wenn ich jetzt zum Beispiel folgedes weg lasse, kann ich dann in der while Schleife, das shif2 lassen ? if [ "$1" == "-t" ] ; then test="yes" [COLOR=red]shift 2[/COLOR] fi
9. Dezember 200321 j Es werden immer die Parameter beim Aufruf um 2 Positionen (Pos.1:)-(BUCHSTABE) (Pos.2:) PARAMETER nach links rausgeshiftet (geschoben) und die nächsten 2 liegen an falls man mehrere hat. Bei der 2. Frage solltest Du nur um 1 shiften und wenigstens einen Abbruchparameter einbauen (dazu war die while-Schleife auch da).
9. Dezember 200321 j achso ... jetzt habe ich das verstanden, klar ... wenn die while schleife nicht da wär, dann bricht er ja sofort ab ... Danke für die hilfe :bimei
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.