Назначьте возвращаемое значение функции переменной в оболочке unix script

Я попытался напечатать значение, возвращенное из тестовой функции. Но это ничего не показывает. Я использовал ./filename.sh для выполнения script. Пожалуйста, помогите

#!/bin/ksh
testfunction()
{

k=5

return $k

}

val=$(testfunction)

echo  $val

Ответ 1

Значение, возвращаемое функцией, сохраняется в $? и не фиксируется $().

Другими словами:

testFunction() 
{ 
    k=5
    echo 3
    return $k 
}

val=$(testFunction)
echo $? # prints 5
echo $val  # prints 3

Ответ 2

Эти функции ksh работают:

IPADDRESS()     # get the IP address of this host
{
    # purpose: to get the IP address of this host
    #       and return it as a character string
    #
    typeset -l IPADDR
    IPADDR=$(ifconfig -a | grep inet | grep -v '127.0.0.1' | awk '{print $2}')
    print $IPADDR
}

IP_Address=$(IPADDRESS)
echo $IP_Address
exit