免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2209 | 回复: 5
打印 上一主题 下一主题

[系统管理] 关于从调用文件中退出的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-03 11:33 |只看该作者 |倒序浏览
main.sh:
     #!/bin/sh
     #set -x
     echo "Main call son file run...."
     source ./son.sh
     echo "Main still run...."
     echo "exit from main"

son.sh:
     #!/bin/sh
     #set -x
     echo "I'm son running ..."
     echo "Error found , exit ..."
     exit         #这里怎么退出?
    echo "son say bye..."


问题:
在main.sh运行的过程中会调用son.sh文件,但是由于son.sh运行中有可能会出错,而且推出son.sh的运行。但是我还想main.sh继续运行,请问在son.sh退出的时候应该怎么退出?exit ? return?

还是根据son.sh的返回状态进行判断?

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2014-04-03 11:58 |只看该作者
回复 1# jshwin

$ ./main.sh
Main call son file run....
I'm son running ...
Error found , exit ...
son RC=2
Main still run....
exit from main

$ cat main.sh
#!/bin/sh
#set -x
echo "Main call son file run...."
. ./son.sh
echo "son RC=$?"
echo "Main still run...."
echo "exit from main"

$ cat son.sh
#!/bin/sh
#set -x
echo "I'm son running ..."
echo "Error found , exit ..."
return 2         #这里怎么退出?
echo "son say bye..."


   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
3 [报告]
发表于 2014-04-03 13:35 |只看该作者
回复 1# jshwin


    不要用source,用 ./ 调用就不会退出了。

论坛徽章:
0
4 [报告]
发表于 2014-04-03 15:55 |只看该作者
./    和 source 有什么区别?回复 3# seesea2517


   

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
5 [报告]
发表于 2014-04-03 16:44 |只看该作者
回复 4# jshwin


    ./ 是调用,执行它,会有一个子进程。所以调用的脚本里的 exit 是退出子进程。
    source 是包含,把参数指定的那个文件包含进来,类似于C/C++的#include,想法于用文件内容替换掉 source 这一行语句。所以其中的 exit 就变成了主脚本里的语句了,自然exit就退出一主脚本了。

论坛徽章:
0
6 [报告]
发表于 2014-04-03 16:52 |只看该作者
TKS,清楚了。呵呵回复 5# seesea2517


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP