15

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

#!/bin/ksh
testfunction()
{

k=5

return $k

}

val=$(testfunction)

echo  $val
4

3 回答 3

34

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

换句话说:

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

val=$(testFunction)
echo $? # prints 5
echo $val  # prints 3
于 2012-10-16T16:51:51.350 回答
0

您正在尝试做的将在 val 变量中捕获函数中“回显”的最后一个值

val=$(testFunction)

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

于 2020-06-26T17:25:54.753 回答
-3

此 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
于 2015-11-17T16:54:01.410 回答