为什么这个ECHO 没有反应?

零七年的夏天
为什么这个ECHO 没有反应?

cat prod.sh

#!/bin/sh

x=1

first ()
{
  if [ $1 = 1 ]
  then
    return 1
  fi
  echo "aa"
}


  first $x
  


sh prod.sh
执行结果么有aa

cat prod2.sh

#!/bin/sh

x=1

first ()
{
  if [ $1 = 1 ]
  then
    return 0
  fi
  echo "aa"
}


  first $x


sh prod2.sh
执行结果还没有aa


  不知道这个RETURN 有什么用?

[[i] 本帖最后由 零七年的夏天 于 2008-7-1 14:13 编辑 [/i]]

walkerxk
我的理解,既然有return了,那后面的输出没有了,你把echo放到前面就有了,还有,你的两个脚本不是一样的么?为什么发两遍?

零七年的夏天
[quote]原帖由 [i]walkerxk[/i] 于 2008-7-1 14:11 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8711071&ptid=1185643][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
我的理解,既然有return了,那后面的输出没有了,你把echo放到前面就有了,还有,你的两个脚本不是一样的么?为什么发两遍? [/quote]

    抱歉,是发的时候搞错的,我做一个测试,不管是返货0或者是返回1,后面的ECHO AA都没有执行,觉得比较诧异

waker
回复 #3 零七年的夏天 的帖子

你都return了还咋echo啊?学学语文吧,基础还是必要的

blackold
回复 #1 零七年的夏天 的帖子

是不是first $x的问题,去掉$x试试。

无声无息
return是结束了function了

blackold
学习了,还没用过这些功能。[img]http://bbs.chinaunix.net/images/smilies/em10.gif[/img]

walkerxk
[quote]原帖由 [i]零七年的夏天[/i] 于 2008-7-1 14:15 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8711103&ptid=1185643][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]


    抱歉,是发的时候搞错的,我做一个测试,不管是返货0或者是返回1,后面的ECHO AA都没有执行,觉得比较诧异 [/quote]
没有return的话echo是可以显示的,我这测试通过。

lipingtababa
函数里的echo 似乎都无效

lipingtababa
我试验过,函数里的echo ,不论玩什么花招,总是输出不了,我特意打开一个文件 exec 4>my.log 然后echo "$pid" >&4都还是没有输出,被玩死了

blackold
回复 #10 lipingtababa 的帖子

因为echo根本没有执行的机会啊。

lipingtababa
我又试验过了,刚才我的结论是错的,那是因为我的变量名写错了,不好意思

lipingtababa
啊,我测试的代码不是楼主的代码,楼主的代码里,如果参数不是1,echo语句也是有执行机会的

tp168
呵呵,这不是明显的函数已经返回了,还怎么显示。

blackold
回复 #13 lipingtababa 的帖子

我的可以看到echo的结果。

walkerxk
执行了return就不会再执行echo,除非把echo放前面。