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 に答える