请教一个关于shell函数返回值的问题

Jackyma1981 2013-12-19 09:12:10
今天学习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的写法为什么得到的值不一样?
...全文
142 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wesleyflagon 2013-12-20
  • 打赏
  • 举报
回复
return [n] Causes a function to exit with the return value specified by n. return的参数是一个数值, 不是一个命令
空的 2013-12-20
  • 打赏
  • 举报
回复
引用 4 楼 Jackyma1981 的回复:
[quote=引用 2 楼 wesleyflagon 的回复:] return [n] Causes a function to exit with the return value specified by n. return的参数是一个数值, 不是一个命令
谢谢,这下明白了。 是否应该这样理解,没有``的时候,是把整条命令作为参数给了return,加上``之后,参数变为这条命令的终止code。[/quote] 应该是吧,我差不多就是这么理解的
Jackyma1981 2013-12-20
  • 打赏
  • 举报
回复
引用 2 楼 wesleyflagon 的回复:
return [n] Causes a function to exit with the return value specified by n. return的参数是一个数值, 不是一个命令
谢谢,这下明白了。 是否应该这样理解,没有``的时候,是把整条命令作为参数给了return,加上``之后,参数变为这条命令的终止code。
Jackyma1981 2013-12-20
  • 打赏
  • 举报
回复
引用 1 楼 erhou134 的回复:
.... fun(){ host=$1 return ping -c 1 $host } 你这样试试就知道为什么了,这是执行函数报错了。。。 然后你把输出重定向了,就看不到错误了~~
试了一下,得到的结果是./fun-test.sh: line 25: return: ping: numeric argument required 还是不太理解。 重定向的内容用``引起来就能被正确返回了?没有``的时候为什么返回值是255?
空的 2013-12-19
  • 打赏
  • 举报
回复
你这是。。。 fun(){ host=$1 return `ping -c 1 $host >/dev/null 2>&1` } 这样就一样了 fun(){ host=$1 return ping -c 1 $host } 你这样试试就知道为什么了,这是执行函数报错了。。。 然后你把输出重定向了,就看不到错误了~~

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧