Forums Neueste Beiträge
 

[gentoo-user-de] bash und "return -1"

10/04/2010 - 14:00 von Juergen Rose | Report spam

Hallo,

ich bekomme Fehler, wenn eine bash-Funktion versucht -1 zurueckzugeben,
siehe Anhang. Beim durchforsten einiger alte bash-Scripts habe ich viele
"return -1" Statements gefunden.
Ist dieses Verhalten neu oder sind meine alten bash-Scripts nie an die
Stelle mit dem "return -1" gekommen.

Gruss Juergen



#!/bin/bash

func() {
echo " in func: \$1=|$1|"
case $1 in
-1) return -1 ;;
ONE) return 1 ;;
TWO) return 2 ;;
THREE) return 3 ;;
*) return 0
esac
}

func "-1" ; echo "after 'func \"-1\"' rc=$?"
func "ONE" ; echo "after 'func \"ONE\"' rc=$?"
func THREE ; echo "after 'func THREE' rc=$?"
func "TWO" ; echo "after 'func \"TWO\"' rc=$?"
func 7 ; echo "after 'func 7' rc=$?"


STRING=`func TWO`

echo "after assign 'func TW0' to STRING: STRING=|$STRING| \$?=$?"


 

Lesen sie die antworten

#1 Alex Schuster
10/04/2010 - 22:50 | Warnen spam
Juergen Rose schreibt:

ich bekomme Fehler, wenn eine bash-Funktion versucht -1 zurueckzugeben,
siehe Anhang. Beim durchforsten einiger alte bash-Scripts habe ich
viele "return -1" Statements gefunden.
Ist dieses Verhalten neu oder sind meine alten bash-Scripts nie an die
Stelle mit dem "return -1" gekommen.



Das ging früher mal. Auf [1] steht, dass negative Rückgabewerte auch sehr
groß sein dürfen (so habe ich es auch in Erinnerung), wàhrend in Thread
[2] erwàhnt wird, dass negative Werte zwar möglich sind, aber (wie bei
positiven Werten) nur die unteren 8 Bit verwendet werden. return -1
entspricht also return 255. Seit bash-4 beta geht das direkt nicht mehr,
aber return -- -1 ist noch erlaubt.
Das ist wohl analog wie bei z.B. gnu-tail, wo früher auch mal tail -1
ging, nun muss es aber tail -n 1 sein.

Wonko

[1] http://linuxseiten.kg-it.de/index.p..._Lektion_8
[2] http://www.mail-archive.com//msg05046.html

Ähnliche fragen