Ich weiß, dass Shell-Skripte einfach Befehle ausführen, als ob sie an der Eingabeaufforderung ausgeführt würden. Ich möchte Shell-Skripte so ausführen können, als wären sie Funktionen ... Das heißt, einen Eingabewert oder eine Zeichenfolge in das Skript übernehmen. Wie gehe ich dabei vor?
Akzeptierte Antwort:
Der Shell-Befehl und alle Argumente für diesen Befehl werden nummeriert angezeigt Shell-Variablen:$0
hat den String-Wert des Befehls selbst, so etwas wie script
, ./script
, /home/user/bin/script
oder Wasauchimmer. Alle Argumente erscheinen als "$1"
, "$2"
, "$3"
und so weiter. Die Anzahl der Argumente befindet sich in der Shell-Variablen "$#"
.
Übliche Wege, damit umzugehen, beinhalten Shell-Befehle getopts
und shift
. getopts
ist dem C getopt()
sehr ähnlich Bibliotheksfunktion. shift
verschiebt den Wert von $2
zu $1
, $3
bis $2
, und so weiter; $#
wird dekrementiert. Der Code sieht sich schließlich den Wert von "$1"
an , Dinge mit einem case
tun …esac
um sich für eine Aktion zu entscheiden und dann eine shift
zu machen um $1
zu verschieben zum nächsten Argument. Es muss immer nur $1
untersucht werden , und vielleicht $#
.