Geben Sie einen Standardwert an, wenn der Befehl mit einem Exit-Code ungleich Null zurückkehrt.

Geben Sie einen Standardwert an, wenn der Befehl mit einem Exit-Code ungleich Null zurückkehrt.

Ich habe eine Konfigurationsdatei configund möchte catdiese Datei. Manchmal configexistiert sie jedoch nicht. In diesem Fall möchte ich, dass mein Befehl einen Standardwert ausgibt.

Vielleicht etwas, das so funktioniert:

$ ls
$ cat config || echo 42
42
$ echo 73 > config
$ cat config || echo 42
73

Antwort1

Ihr Konstrukt ist in Ordnung. Sie könnten sogar so etwas tun wie

cat config || cat defaultconfig

Wenn Sie einen beliebigen Befehl verwenden (wie ./get_config_from_webin Kommentaren), müssen Sie sicherstellen, dass der Befehl einen sinnvollen Rückgabestatus liefert. Das kann schwierig sein, Shell-Skripte geben nur das Ergebnis des zuletzt ausgeführten Befehls zurück. Sie müssen ein ausführen, exitwenn Sie ein anderes Ergebnis wünschen.

Antwort2

Im Folgenden wird für alle nicht erfassten Fehlerzustände die Ausgabe 42 ausgegeben:

trap "echo 42" ERR

Sie können dies zu einer konfigurierbaren Variable machen:

trap 'echo "${CONFIG:=42}"' ERR  # if $CONFIG is not set, it will be defaulted to 42

Antwort3

if [ -a config ]; then cat config; else echo ${DEFAULT};fi

vorausgesetzt, die Variable DEFAULT wurde zuvor auf einen Wert gesetzt.

Antwort4

Sie könnten den Exit-Code in einer if-Anweisung verwenden:

#!/bin/bash
cat config
if [[ "$?" -ne "0" ]]; then
    echo "VALUE"
fi

Wenn der vorherige Befehl erfolgreich ist, wird er mit dem Wert „0“ beendet. Sie sagen ihm also, dass er bei jedem anderen Beenden (Fehler) das ausgibt, was im „VALUE“ steht.

verwandte Informationen