So können Sie &&, ||, und ! in Linux verwenden.

Mit den Operatoren &&, || und ! können Sie Tests durchführen und auf der Grundlage der Testergebnisse Aktionen ausführen, aber sie können etwas kompliziert sein, bis Sie die zugrunde liegende Logik verstehen. [...]

(c) pixabay.com

Mit den Operatoren &&, || und ! können Sie unter Linux viele nützliche Funktionen ausführen, aber Sie müssen sich zunächst an die Syntax gewöhnen, die ein wenig komplizierter ist als die der if-then-else-Befehle, die Sie normalerweise verwenden. Zu Beginn sollte ich erklären, dass eine Gemeinsamkeit der Befehlsbeispiele in diesem Beitrag die Verwendung von etwas ist, das ich als Kurztest „if“ bezeichnen würde.

Hier ist ein Beispiel:

$ [ -f donuts ]
$ echo %?
1

Der Befehl -f donuts fragt, ob es eine Datei (-f) namens „donuts“ gibt. Das Ergebnis des Tests wird nicht angezeigt, es sei denn, wir geben den Rückgabewert anschließend mit „echo $?“ aus. In diesem Fall ist es falsch (d.h. nicht Null), so dass wir wissen, dass die Datei nicht existiert. Keine Donuts für uns!

Um einen ähnlichen, aber entgegengesetzten Test zu erstellen, könnten wir fragen, ob keine Donuts-Datei existiert. Dieser Test würde wie folgt aussehen:

$ [ ! -f donuts ]
$ echo $?
0

Dieses Mal ist das Ergebnis wahr (0). Wieder keine Donuts. Allerdings werden diese Befehle im Allgemeinen nicht auf diese Weise verwendet. Stattdessen werden die Operatoren && oder || am Ende angehängt, um einen Befehl auf der Grundlage der Ergebnisse des durchgeführten Tests auszuführen. Wenn es zum Beispiel keine Datei namens donuts gibt, könnten Sie eine Beschwerde wie diese einreichen:

$ [ ! -f donuts ] && echo „Wir brauchen donuts!“

Der Schlüssel zum Verständnis dieses Befehls ist, dass && ein „UND“-Operator ist, während || ein „ODER“-Operator ist. Wenn Sie einen Befehl wie den oben gezeigten ausführen, werden beide Seiten des Befehls – der Test und der resultierende Befehl – ausgeführt, wenn es keine Datei namens „donuts“ gibt. Der Befehl besagt im Grunde, dass „wenn eine Datei namens donuts nicht existiert, der Text mit dem Befehl echo angezeigt wird“. Wenn das Ergebnis des Tests mit && wahr ist, wird der Befehl auf der rechten Seite des && ausgeführt. Wenn das Ergebnis falsch ist, wird der Befehl beendet.

Dieser Befehl sagt: „Wenn es ein Verzeichnis namens mydir gibt“, zeige eine Liste an:

$ [ -d mydir ] && ls -ld mydir
drwxr-xr-x. 2 shs shs 4096 Apr 13 11:46 mydir

In diesem nächsten Beispiel testen wir, ob ein Verzeichnis nicht existiert. Ist dies nicht der Fall, wird mit dem Befehl mkdir ein Verzeichnis erstellt. Der zweite Befehl, der unten gezeigt wird, prüft, ob das Verzeichnis erstellt wurde. Wenn das Verzeichnis bereits existiert, liefert der Befehl einen Fehlerstatus und der Befehl mkdir wird nicht ausgeführt.

$ [ ! -d newdir ] && mkdir newdir
$ ls -ld newdir
drwxr-xr-x. 2 shs shs 4096 Apr 11 11:54 newdir

Das Gegenteil ist der Fall, wenn Sie || verwenden. Wenn der erste Teil des Befehls erfolgreich ist (also „wahr“ ergibt), wird der zweite Teil nie ausgeführt.

Für &&-Operatoren ist die folgende Logik implementiert:

Wenn ERGEBNIS dann AKTION

Wenn ERFOLG dann AUSFÜHREN des zweiten Befehls
Wenn FAIL dann BEENDEN
Wenn Sie einen Befehl mit || ausführen, wird der zweite Teil des Befehls nur ausgeführt, wenn der erste fehlschlägt. Wenn der erste Teil erfolgreich ist, ist der Befehl beendet. Mit anderen Worten: Der Befehl ist erfüllt, wenn einer der beiden Teile funktioniert.

Für ||-Operatoren ist die folgende Logik implementiert:

Wenn ERGEBNIS dann AKTION

Wenn ERFOLG dann BEENDEN
Wenn FAIL dann AUSFÜHREN 2. Befehl
In diesem nächsten Beispiel wird geprüft, ob es ein Verzeichnis mit dem Namen „scripts“ gibt. Ist dies nicht der Fall (d.h. das Testergebnis ist „falsch“), wird der zweite Teil des Befehls ausgeführt und der Befehl mkdir erstellt das Verzeichnis. Wenn ein Verzeichnis scripts vorhanden ist, wird der Befehl beendet und der Befehl mkdir nicht ausgeführt.

$ [ -d scripts ] || mkdir scripts
$ ls -ld scripts
drwxr-xr-x. 2 shs shs 4096 Apr 11 12:16 scripts

Fazit

Obwohl && und || sich unterschiedlich verhalten, können Sie beide Operatoren verwenden, um das gleiche Ergebnis zu erzielen. Die folgenden Beispiele veranschaulichen dies.

Jeder der folgenden Befehle erstellt eine Datei mit dem Namen notes, wenn noch keine existiert, und tut nichts, wenn sie existiert.

$ [ ! -f notes ] && touch notes
$ [ -f notes ] || touch notes

In ähnlicher Weise erstellt jeder der beiden folgenden Befehle ein Verzeichnis mit dem Namen scripts, wenn es noch nicht existiert, und nimmt ansonsten keine Änderungen vor.

$ [ ! -d scripts ] && mkdir scripts
$ [ -d skripte ] || mkdir skripte

Die Verwendung von && und || mag zwar etwas kompliziert erscheinen, aber ein wenig Übung und einige praktische Beispielbefehle können sich wirklich auszahlen.

*Sandra Henry-Stocker verwaltet seit mehr als 30 Jahren Unix-Systeme. Sie bezeichnet sich selbst als „USL“ (Unix als Zweitsprache), kann aber genug Englisch, um Bücher zu schreiben und einzukaufen. Sie lebt in den Bergen von Virginia, wo sie, wenn sie nicht mit Unix arbeitet oder darüber schreibt, die Bären von ihren Vogelfutterstellen verjagt.


Mehr Artikel

Gregor Schmid, Projektcenterleiter bei Kumavision, über die Digitalisierung im Mittelstand und die Chancen durch Künstliche Intelligenz. (c) timeline/Rudi Handl
Interview

„Die Zukunft ist modular, flexibel und KI-gestützt“

Im Gespräch mit der ITWELT.at verdeutlicht Gregor Schmid, Projektcenterleiter bei Kumavision, wie sehr sich die Anforderungen an ERP-Systeme und die digitale Transformation in den letzten Jahren verändert haben und verweist dabei auf den Trend zu modularen Lösungen, die Bedeutung der Cloud und die Rolle von Künstlicher Intelligenz (KI) in der Unternehmenspraxis. […]

News

Richtlinien für sichere KI-Entwicklung

Die „Guidelines for Secure Development and Deployment of AI Systems“ von Kaspersky behandeln zentrale Aspekte der Entwicklung, Bereitstellung und des Betriebs von KI-Systemen, einschließlich Design, bewährter Sicherheitspraktiken und Integration, ohne sich auf die Entwicklung grundlegender Modelle zu fokussieren. […]

News

Datensilos blockieren Abwehrkräfte von generativer KI

Damit KI eine Rolle in der Cyberabwehr spielen kann, ist sie auf leicht zugängliche Echtzeitdaten angewiesen. Das heißt, die zunehmende Leistungsfähigkeit von GenAI kann nur dann wirksam werden, wenn die KI Zugriff auf einwandfreie, validierte, standardisierte und vor allem hochverfügbare Daten in allen Anwendungen und Systemen sowie für alle Nutzer hat. Dies setzt allerdings voraus, dass Unternehmen in der Lage sind, ihre Datensilos aufzulösen. […]

Be the first to comment

Leave a Reply

Your email address will not be published.


*