Grundlagen von Linux und der Kommandozeile

$ cat s.sh
#!/bin/bash
echo "$# $1"
$ ./s.sh a "b c" d

Wie oben gezeigt, wird das Skript s.sh mit Argumenten ausgeführt. Welche Ausgabe ist richtig?

  1. A3 ./s.sh
  2. B3 a
  3. 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 "$@".

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. In welchem Fall ist die Bedingung des obigen if in einem Shell-Skript wahr?
  2. Welche Dateien liegen nach der obigen Sitzung im Verzeichnis?
  3. Ein ausführbares Skript run.sh im aktuellen Verzeichnis ergibt bei Eingabe von „run.sh“ die Meldung „command not found“, lässt sich aber durch Eingabe von „./run.sh“ ausführen. Was ist der Grund?
  4. Welche Kombination der Ausgaben der beiden bash -c-Befehle ergibt sich, wenn die obigen Befehle nacheinander ausgeführt werden?
  5. Was ist die Hauptaufgabe eines Paketverwaltungssystems unter Linux (apt bei Debian-basierten Systemen, dnf bei Red-Hat-basierten Systemen usw.)?