Es gibt Empfehlungen zu den folgenden Optionen verwenden Bash machen scheitern schnell:Bash scheitern schnell Funktionen
set -o errexit
set -o nounset
set -o pipefail
jedoch Diese Optionen funktionieren nicht für Bash-Funktionen erwartet, über ||
geleitet.
z. in Skript
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
my_function() {
test -z "$1"
echo "this SHOULD NOT be printed"
}
my_function 1 || echo "???" # 1
my_function 1 # 2
echo "this will not be printed"
Linie # 2
wird das Skript verursacht mit Code 1 ohne Ausgang zu beenden. Das ist, was ich erwarte.
Zeile # 1
verwirrt mich eigentlich: my_function
wird erfolgreich abgeschlossen, Drucken "das sollte nicht gedruckt werden" und Rückgabecode 0, also die "???" wird nicht gedruckt.
Wie kann ich Bash my_function
on line # 1
Bash Prozess # 2
machen?
Nur aus Neugier, wo haben Sie diese Dinge empfohlen? –