PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bash: Return-Anweisung bei Funktionen



Reality
04-05-2012, 18:22
Hallo,
ich habe hier eine Funktion von Advanced Bash-Scripting Guide (http://tldp.org/LDP/abs/html/testbranch.html) kopiert. Allerdings bekomme ich bei den Return-Anweisungen einen Fehler, obwohl sie korrekt ausgeführt werden.


SUCCESS=0
FAILURE=-1

isdigit () # Tests whether *entire string* is numerical.
{ # In other words, tests for integer variable.
[ $# -eq 1 ] || return $FAILURE

case $1 in
*[!0-9]*|"") return $FAILURE;;
*) return $SUCCESS;;
esac
}

Die Abfrage erfolgt auf diese Weise:


if ! isdigit "$@" ; then
echo "Bitte rufen Sie das Programm auf folgende Weisen auf:"
echo "./work.sh #AnzahlAufrufe #Sekunden #Millisekunden"
exit
fi

Wird nun z. B. in return $FAILURE reingesprungen, dann bekomme ich folgende Fehlermeldung:


./work.sh u z h
./work.sh: line 8: return: -1: invalid option
return: usage: return [n]
./work.sh: line 11: return: -1: invalid option
return: usage: return [n]
Bitte rufen Sie das Programm auf folgende Weisen auf:
./work.sh #AnzahlAufrufe #Sekunden #Millisekunden


Weiß vielleicht jemand weiter?

Danke im Voraus!

L. G.
Reality

undefined
06-05-2012, 09:58
Dieser Code ist ab Bash Version >= 4.0 veraltet!
Es gibt jetzt keinen Negative Exit Code.
Gültige Werte sind 0-255


Exit from a `for', `while', `until', or `select' loop etc.
If N is supplied, the Nth enclosing loop is exited.
N must be greater than or equal to 1.
The return status is zero unless N is not greater than or equal to 1.