将函数的返回值分配给unix shell脚本中的变量

时间:2012-10-16 16:41:07

标签: function shell unix

我试图打印从testfunction返回的值。但它没有显示任何东西。我使用./filename.sh来执行脚本。请帮忙

#!/bin/ksh
testfunction()
{

k=5

return $k

}

val=$(testfunction)

echo  $val

3 个答案:

答案 0 :(得分:27)

函数返回的值存储在$?中,$()不会捕获。

换句话说:

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

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

答案 1 :(得分:0)

您要执行的操作将在val变量中捕获函数中“回显”的最后一个值

val=$(testFunction)

如果要捕获函数的返回值,则应使用$? [即echo $?]是最后一个退出状态。

答案 2 :(得分:-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