Unterscheidet sich der Null-Exit-Status von dem der Booleschen Logik bei Verwendung der Linux-Shell?

Unterscheidet sich der Null-Exit-Status von dem der Booleschen Logik bei Verwendung der Linux-Shell?

Ich verstehe, dass, wenn ich einen Befehl in der Shell mit den Et-Zeichen-Operatoren ausführe command1&&command2und der erste Befehl erfolgreich ausgeführt wird, dies mit einem Exit-Status von Null geschieht.

Ist dies ähnlich oder anders als die Boolesche Logik, bei der 0 falsch und 1 wahr ist, oder habe ich das falsch verstanden?

Macht es einen Unterschied, welche Shell Sie verwenden? Ich verwende derzeit die Bourne-Again-Shell.

Antwort1

Shell ist meistens 0, um null Fehler und Erfolg anzuzeigen, also ist es in diesem Sinne logisch wahr, anders als in vielen Programmiersprachen, wo 0 normalerweise falsch ist. Obwohl moderne Sprachen heutzutage dazu neigen, unterschiedliche logische Werte für wahr und falsch zu haben.

Antwort2

Die bessere Begründung ist, dass es eigentlich nur einen „Erfolg“ gibt, für einen „Misserfolg“ jedoch mehrere Gründe: Datei nicht gefunden, Argumentfehler, Rechenfehler usw. Dies war eine Konvention des Betriebssystems und nicht nur der Shell bei der Interprozesskommunikation – der Rückgabecode, der vom exit(2)Systemaufruf gesendet und vom wait(2)Aufruf empfangen wurde.

verwandte Informationen