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 $# .