日期:2014-05-16  浏览次数:20550 次

请教一个关于shell函数返回值的问题
今天学习shell函数的时候,发现一个问题:
比如我有一个test.sh的文件,内容如下

fun(){
host=$1
return ping -c1 $host >/dev/null 2>&1
}

fun2(){
host=$1
ping -c1 $host >/dev/null 2>&1
return $?
}
fun hpcs09
echo "fun return is: "$?
fun2 hpcs09
echo "fun2 return is: "$?

运行这个文件之后发现fun()和fun2()的返回值分别是255和0。
请问熟悉shell的朋友这两种return的写法为什么得到的值不一样?

------解决方案--------------------
你这是。。。

fun(){
host=$1
return `ping -c 1 $host >/dev/null 2>&1`
}
这样就一样了

fun(){
host=$1
return ping -c 1 $host
}
你这样试试就知道为什么了,这是执行函数报错了。。。
然后你把输出重定向了,就看不到错误了~~
------解决方案--------------------
return [n]
              Causes a function to exit with the return value specified by n. 

return的参数是一个数值, 不是一个命令