Im Wesentlichen habe ich ein Skript, das als eine Task-Wrapper und E-Mails einen Benutzer, wenn die Aufgabe fehlschlägt.Bash Exec Wrapper-Skript - mehrere Befehle als Argumente übergeben
Die Aufgabe wird als Argument an das Skript übergeben. Das Problem tritt auf, wenn wir mehrere Befehle ausführen müssen, sagen wir, dass die folgende Zeile an das Skript übergeben wird, da die Aufgabe "echo this; echo that"
ausgeben würde; echo das.
Also die Frage ist, was ist die einfachste Möglichkeit, mehrere Befehle auszuführen, ohne die Eingabe Befehlszeichenfolge durchlaufen und auf die ";" verkohlen?
Einfaches Beispiel:
FIRST=$1
TASK=$*
echo run
echo "emailing $FIRST"
$TASK
echo done
und dieses Skript laufen wir ./wrapper.sh "[email protected]" "echo this; echo that"
Vorschläge verwenden würde?
Dank - ist es trotzdem, den Rückgabewert zu erhalten, wenn jeder Befehl in der Befehlszeichenfolge nicht. Sagen Sie "echo this; dsddsdsd; echo das", der mittlere Befehl wird fehlschlagen (nicht gefunden), aber $? wird immer noch 0 sein, wenn das Echo erfolgreich ist. Die Frage ist also, ob ich bei einem Fehler mit der Option -e anhalten kann, aber ich kann jeden Befehl ausführen, um Fehler ungleich Null zurückzugeben (ich rate nein, aber einen Versuch wert). – NightWolf
Hrm, ich kann mir keinen einfachen Mechanismus vorstellen, um das zu tun; Können Sie stattdessen Ihr Skript so ändern, dass mehrere Befehle als mehrere Argumente akzeptiert werden? z.B. 'wrapper.sh alert @ hostname" echo dies "" echo das "'? – sarnold