Mark Lucernas
2020-08-09

Function

Returning Values from Bash Function

Method 1: Simplest

function myfunc()
{
    myresult='some value'
}

myfunc
echo $myresult

Method 2: Better approach

function myfunc()
{
    local  myresult='some value'
    echo "$myresult"
}

result=$(myfunc)   # or result=`myfunc`
echo $result

Method 3: Accepts variable

function myfunc()
{
    local  __resultvar=$1
    local  myresult='some value'
    eval $__resultvar="'$myresult'"
}

myfunc result
echo $result

NOTE: Make sure to use variable names inside the function that are not likely to be used as parameter variable. e.g. __resultvar.

Method 4: More flexibility

function myfunc()
{
    local  __resultvar=$1
    local  myresult='some value'
    if [[ "$__resultvar" ]]; then
        eval $__resultvar="'$myresult'"
    else
        echo "$myresult"
    fi
}

myfunc result
echo $result
result2=$(myfunc)
echo $result2

Ref:


Resources