Az alábbi script fut:
#!/bin/sh
back() {
return 1
}
echo "Internal function"
VAR=`back`
echo "VAR=$VAR"
echo "External function"
VAR=`expr 1 + 1`
echo "VAR=$VAR"
Az eredmény siralmas:
Internal function
VAR=
External function
VAR=2
Meg tudja mondani valaki, hogy miért nem adja vissza a rendes visszatérési értéket, ha a belső függvény hívódik meg?
Viszont ha az alábbi formában adom meg:
back
VAR=$?
Akkor rendesen visszaadja az értéket.
- 1078 megtekintés
Hozzászólások
Közben játszottam és van egy érdekesség
A scriptben a következő megadás után "jól" fut:
#!/bin/sh
back() {
echo 1
return
}
echo "Internal function"
VAR=`back`
echo "VAR=$VAR"
Ekkor az eredmény:
Internal function
VAR=1
--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!
- A hozzászóláshoz be kell jelentkezni
Es ez igy van rendjen, ugyanis a kovetkezo kifejezes: "`cmd`" kiertekeles soran a cmd parancs kimenetevel, NEM pedig a visszateresi ertekevel helyettesitodik. A "$?" valtozoval viszont megtalaltad azt amit kerestel, mert az a legutobbi visszateresi erteket tartalmazza.
üdv. rubasov
- A hozzászóláshoz be kell jelentkezni
Nézegettem igazad van, csak van egy "enterspájz" script ami pont ezzel operál ezért volt furcsa az egész. Szóval ott vagyunk ahol a partszakad.
--
A nyúl egy igazi jellem. Ott ül a fűben, de akkor sem szívja!
- A hozzászóláshoz be kell jelentkezni