Grundlagen von Linux und der Kommandozeile
$ cat s.sh
#!/bin/bash
echo "$# $1"
$ ./s.sh a "b c" dWie oben gezeigt, wird das Skript s.sh mit Argumenten ausgeführt. Welche Ausgabe ist richtig?
- A3 ./s.sh
- B3 a
- C4 a
Antwort und Erläuterung anzeigen
Antwort: B. 3 a
In einem Skript stehen $1, $2 … für das erste, zweite … Argument, $# für die Anzahl der Argumente und $0 für den Namen des Skripts selbst. "b c" steht in doppelten Anführungszeichen und wird daher zu einem einzigen Argument, das ein Leerzeichen enthält; es gibt also drei Argumente: a, b c und d. Daher ist $# gleich 3 und $1 gleich a, und die Ausgabe lautet 3 a. Um alle Argumente mit erhaltener Trennung an einen anderen Befehl weiterzugeben, schreibt man "$@".
Weiter: 9 weitere Fragen zu Grundlagen von Linux und der Kommandozeile