Linux Startskript?

4 Antworten

  1. Zeilen, die mit # beginnen sind Kommentare, in der Tat.
  2. $0 ist der Name bzw. der "volle" Name des aufgerufenen Skripts. (d.h.: wenn z.B. /foo/bar/baz.sh aufgerufen wird, dann enthält $0 auch genau das; wenn ./test.sh aufgerufen wird, dann ebendies)
  3. $1 enthält den ersten Kommandozeilenparameter, der dem Skript übergeben wurde. (Vorsicht!: blah.sh * ist etwas völlig anderes als blah.sh '*')
Wenn ein # vor dem Code ist dient das ja nur als Kommentar und kann gelöscht werden oder?

Ja, allerdings haben Kommentare eine Bedeutung und wenn keine da sind, kann es genau die Probleme geben, die Du grade hast: Man versteht das Skript nicht.

Und woher kommen die Variablen $1 und $0, diese werden doch nirgends festgelegt oder?

Aus der Laufzeitumgebung des Skripts (Environment). Das sind in der bash vordefinierte Umgebungsvariablen:

$0 ist der Name des ausgeführten Skripts und damit ruft sich mit den Zeilen "$0 start" und "$0 stop" das Skript selbst wieder auf - und hier sind wir auch gleich bei $1:

$1 ist der erste an das Skript übergebene Parameter (Hier "start" und "stop")

Startet das Skript oder kommt eine Fehlermeldung?

Vorausgesetzt Du hast die Syntaxprüfung mit "bash -n <skript>" fehlerfrei durchgeführt (was ich mit einem Bild nicht machen kann) startet das Skript. Wenn Du allerdings nicht angibst, welcher Zweig (start | stop | restart) durchlaufen werden soll, wird es eine Ausgabe machen, dass es diese Information benötigt wird und

<skriptname> start|stop|restart

ausgeben und sich mit dem Fehlercode 1 ("echo $?" nach Beendigung ausführen, um das zu prüfen) beenden.

Ja, # ist ein Kommentar, mit Ausnahme der Shebang.

Die $# der Shell entsprechen dem argv[#] bei C und Co. Es sind die sogenannten Positional Parameters.

Das Skript sieht wie ein typisches Initskript aus, ob es auf Deinem System funktioniert, hängt vom verwendeten Initsystem ab, manuell aufrufbar sollte es in jedem Fall sein.

$0 ist der Name des Scripts und $1 ist das erste commandline argument.

Ja # markiert Kommentare.

Blank739 
Fragesteller
 08.05.2024, 18:38

Also sind das Standardvariablen von Bash oder? Danke erstmal für die Antwort :)

0