Grundlagen von Linux und der Kommandozeile

if [ -f "$f" ]; then
  echo "found"
fi

In welchem Fall ist die Bedingung des obigen if in einem Shell-Skript wahr?

  1. AWenn eine gewöhnliche Datei mit dem Namen in der Variable f existiert
  2. BWenn eine Datei mit dem Namen in der Variable f existiert und ihre Größe größer als 0 ist
  3. CWenn eine Datei oder ein Verzeichnis mit dem Namen in der Variable f existiert
Antwort und Erläuterung anzeigen

Antwort: A. Wenn eine gewöhnliche Datei mit dem Namen in der Variable f existiert

[ ] ist eine andere Schreibweise des Befehls test: Er liefert den Exit-Status 0 (wahr), wenn die Bedingung erfüllt ist, und if verzweigt danach. -f prüft, ob „eine gewöhnliche Datei mit diesem Namen existiert“, und ist bei einem Verzeichnis falsch. Um nur die Existenz zu prüfen, verwendet man -e, für ein Verzeichnis -d und dafür, dass die Größe größer als 0 ist, -s. Nach [ und vor ] ist ein Leerzeichen nötig, und wenn man die Variable wie in "$f" in doppelte Anführungszeichen setzt, funktioniert die Prüfung auch bei Namen mit Leerzeichen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. Welche Dateien liegen nach der obigen Sitzung im Verzeichnis?
  2. 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?
  3. Welche Kombination der Ausgaben der beiden bash -c-Befehle ergibt sich, wenn die obigen Befehle nacheinander ausgeführt werden?
  4. Was ist die Hauptaufgabe eines Paketverwaltungssystems unter Linux (apt bei Debian-basierten Systemen, dnf bei Red-Hat-basierten Systemen usw.)?
  5. Was ist auf einem Linux-System mit systemd der Unterschied zwischen „systemctl start license.service“ und „systemctl enable license.service“ für den Dienst license.service?