Was ist der beste Weg, um eine Wrapper-Funktion zu schreiben, die Befehle ausführt und ihren Exit-Code protokolliert

Ich verwende diese Funktion derzeit, um ausgeführte Befehle umzubrechen und ihre Ausführung sowie den Rückkehrcode zu protokollieren und im Falle eines Rückkehrcodes ungleich Null zu beenden.

Dies ist jedoch problematisch, da es anscheinend eine doppelte Interpolation ausführt und Befehle mit einfachen oder doppelten Anführungszeichen das Skript brechen.

Kannst du einen besseren Weg empfehlen?

Hier ist die Funktion:

do_cmd()
{
    eval $*
    if [[ $? -eq 0 ]]
    then
        echo "Successfully ran [ $1 ]"
    else
        echo "Error: Command [ $1 ] returned $?"
        exit $?
    fi
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage