testfunctionから返された値を出力しようとしました。しかし、何も表示されていません。以前./filename.sh
はスクリプトを実行していました。助けてください
#!/bin/ksh
testfunction()
{
k=5
return $k
}
val=$(testfunction)
echo $val
関数によって返される値は に格納され$?
、 によってキャプチャされません$()
。
言い換えると:
testFunction()
{
k=5
echo 3
return $k
}
val=$(testFunction)
echo $? # prints 5
echo $val # prints 3
あなたがやろうとしているのは、関数で最後に「エコーされた」値を val 変数にキャプチャすることです
val=$(testFunction)
関数の戻り値を取得したい場合は、 $? [ie echo $?] は最後の終了ステータスです。
この 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