Interessante Binärdateien auf Unix-Systemen
- Auf Unix-Systemen gibt es Binärdateien, deren Name aus einem einzelnen Symbol besteht.
- Führt man den Befehl
/bin/[aus, kann man ein Programm mit dem Namen[sehen. [undtestverweisen auf dieselbe Binärdatei, und beide Befehle erfüllen tatsächlich dieselbe Funktion.
Verwendung des Programms test und von [
- Das Programm
testwird in der Shell verwendet, um Ausdrücke auszuwerten. - Es wird für String-Vergleiche, Zahlenvergleiche und die Prüfung von Dateibedingungen genutzt.
testnimmt Argumente entgegen, wertet einen Ausdruck aus und gibt bei wahr 0, bei falsch 1 zurück.
Warum es zwei Befehle gibt
- Warum es sowohl
testals auch[gibt, ist nicht ganz klar, vermutlich dient es aber der besseren Lesbarkeit. - Mit dem Befehl
[lassen sich Bedingungen sauberer ausdrücken als mittest. - Bei der Verwendung von
[muss das letzte Argument des Befehls mit]enden.
Unterschied zwischen Built-ins und externen Binärdateien
- Da
testund[in Shell-Skripten häufig verwendet werden, sind sie in den meisten Shells als Built-ins implementiert. - Je nachdem, ob man ein Built-in oder eine externe Binärdatei verwendet, kann sich das Verhalten unterscheiden; Unterschiede gibt es auch zwischen den Shells selbst.
Verwendung und Unterschiede von [[
[[ist eine Bash-Erweiterung, die die Verwendung von[ersetzt.- Als Built-in kann
[[die grundlegenden Regeln der Sprache innerhalb von Ausdrücken verändern. - Bei String-Vergleichen behandelt
[[Glob-Patterns als Literale und kann dadurch andere Ergebnisse liefern.
Auswahl beim Schreiben von Shell-Skripten
- Wenn man portable Shell-Skripte schreiben will, sollte man
[verwenden. - Schreibt man ein Bash-spezifisches Skript, bietet
[[mehr Funktionen.
Kombination von Shell-Ausdrücken und test-Ausdrücken
- Die Shell besitzt mit
!,&&und||eigene Ausdrücke. test-Ausdrücke und Shell-Ausdrücke lassen sich in einem einzigen Befehl kombinieren.
Meinung von GN⁺
Der wichtigste Punkt dieses Artikels ist, dass [ und test auf Unix-Systemen als zwei unterschiedliche Befehle mit derselben Funktion existieren, was vermutlich der besseren Lesbarkeit und Effizienz von Shell-Skripten dient. Diese Information kann für angehende Software Engineers hilfreich sein, wenn sie Shell-Skripte schreiben oder verstehen, und sie hilft auch dabei, die Funktionsweise von Shell-Skripten sowie die Unterschiede zwischen verschiedenen Shells zu begreifen. Interessant ist der Text außerdem, weil er zeigt, wie grundlegende Werkzeuge des Shell-Scripting in unterschiedlichen Formen genutzt werden können, und weil er die Komplexität und Flexibilität der Shell-Programmierung gut sichtbar macht.
1 Kommentare
Hacker-News-Kommentare
Danksagung des ursprünglichen Autors und Vorschlag zur Titelkorrektur
Geschichte des Bourne-Shell-Befehls "test" und persönliche Vorliebe
Beispiel für Bedingungen ohne Verwendung eines
if-BlocksKombination von
if-Blöcken und gewöhnlichen BefehlenÜberlegungen zum Einsatz logischer Operationen im
test-BefehlVorteile der Verwendung des Befehls "test" und die Bequemlichkeit von "man test"
Vorsicht beim Verhalten mit einem einzelnen Argument bei
[undtestUnterschied zwischen
/bin/[und/bin/testunter Linux und NetBSDTeilen von Blog-Links zu einer tieferen Auseinandersetzung mit
test/[/[[und den Merkwürdigkeiten der ShellHinweis, dass
[[bash-spezifisch ist, und Empfehlung zu[[, wenn bash sicher verwendet wirdVerwirrung über die Wahrnehmung, dass
[kein Teil der bash-Skriptsprache istStarke Meinung zur Shell und Ablehnung der Verwendung von
[