fff-layer3-config: return error values in functions instead of terminating #260

Closed
fbl wants to merge 1 commits from fbl:testmodefix into master
1 changed files with 11 additions and 6 deletions

View File

@ -7,6 +7,7 @@
execute_subshell() {
if [ $# -ne 1 ]; then
echo "Usage:" "$0" "<function>"
return 1
fi
for script in /etc/layer3.d/*; do
@ -23,7 +24,7 @@ execute_subshell() {
if [ $? -ne 0 ]; then
echo
echo "Error when executing" "$1" "from" "$(basename "$script")"
exit 1
return 1
fi
done
}
@ -32,29 +33,33 @@ configure() {
echo "This script might remove existing vlans, interfaces, addresses, etc."
read -r -p "Do you really want to continue? (y/n) " response
if ! ( [ "$response" == "y" ] || [ "$response" == "Y" ] ); then
exit 1
return 1
fi
echo
execute_subshell configure
execute_subshell configure || return $?
exit 0
return 0
Review

Ich glaub es reicht einfach execute_subshell configure alleine da stehen zu lassen. Die beiden returns können weg. Die Funktion nimmt den Wert des letzten Befehls an.

#!/bin/sh

success() { true; }
failure() { false; }
success; echo $?
failure; echo $?

Ich glaub es reicht einfach `execute_subshell configure` alleine da stehen zu lassen. Die beiden `return`s können weg. Die Funktion nimmt den Wert des letzten Befehls an. ```sh #!/bin/sh success() { true; } failure() { false; } success; echo $? failure; echo $? ```
Review

Das ist richtig, ich habe mich aber bewusst für diese etwas explizitere Form entschieden, weil ich das nicht offensichtlich finde. Dann müsste man es kommentieren, und dann kann ichs auch gleich ausschreiben.

Wenn noch mal jemand Code dazwischen fügt, dann bekommt der Code nicht versehentlich return values, die er eigentlich nicht haben soll.

Das ist richtig, ich habe mich aber bewusst für diese etwas explizitere Form entschieden, weil ich das nicht offensichtlich finde. Dann müsste man es kommentieren, und dann kann ichs auch gleich ausschreiben. Wenn noch mal jemand Code dazwischen fügt, dann bekommt der Code nicht versehentlich return values, die er eigentlich nicht haben soll.
}
reload_services() {
execute_subshell reload
reload_config
return 0
Review

Brauchsts das?

Brauchsts das?
Review

Ja, sonst gibts als Rückgabewert den Exitstatus von reload_config.

Ja, sonst gibts als Rückgabewert den Exitstatus von reload_config.
}
apply_changes() {
execute_subshell apply
reload_services
exit 0
return 0
Review

Und das?

Und das?
Review

Da reload_services sowieso immer 0 als return value hat.. Könnte man weglassen (da der Rückgabewert sowieso nirgends geprüft wird sowieso), aber ich finde es aus dem gleichen Grund wie weiter oben schöner, wenn man es explizit stehen lässt.

Da reload_services sowieso immer 0 als return value hat.. Könnte man weglassen (da der Rückgabewert sowieso nirgends geprüft wird sowieso), aber ich finde es aus dem gleichen Grund wie weiter oben schöner, wenn man es explizit stehen lässt.
}
revert_changes() {
execute_subshell revert
exit 0
return 0
Review

Und hier?

Und hier?
}
keep_changes() {