Egy kis bash probléma (Internal / External command)

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.

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!