Gibt es etwas Ähnliches wie Pipefail für mehrere Befehle, wie eine 'try'-Anweisung, aber innerhalb von bash. Ich möchte so etwas machen:
echo "trying stuff"
try {
command1
command2
command3
}
Wenn ein Befehl fehlschlägt, können Sie den Fehler dieses Befehls jederzeit beenden und wiederholen. Ich möchte nicht so etwas tun müssen wie:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
Und so weiter ... oder so ähnlich:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Weil sich die Argumente jedes Befehls, von dem ich glaube (korrigieren Sie mich, wenn ich falsch liege), gegenseitig stören. Diese beiden Methoden scheinen mir schrecklich langwierig und böse zu sein, deshalb appelliere ich hier an eine effizientere Methode.
set -e
ist eine schreckliche Idee. In den Übungen in BashFAQ # 105 werden nur einige der unerwarteten Randfälle erläutert , die eingeführt werden, und / oder der Vergleich zeigt Inkompatibilitäten zwischen den Implementierungen verschiedener Shells (und Shell-Versionen) unter inulm.de/~mascheck/various/set -e .
set -euo pipefail
.