免费注册 查看新帖 |

Chinaunix

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

如何得到子shell 脚本的执行完的状态 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-05 22:08 |只看该作者 |倒序浏览
有一个主脚本 Main.sh
调用一个子脚本 sub.sh

主脚本如何得到子脚本是否执行成功,还是失败的状态。 用$?在下面的状态好像不行。

#!/bin/sh

sh sub.sh
echo $?

--------------
#!/bin/sh

# do some operation
-------------------

论坛徽章:
0
2 [报告]
发表于 2009-11-06 07:33 |只看该作者
其实,可能的情况是sh执行脚本完成了,但脚本里的状态没有反应出来。

论坛徽章:
0
3 [报告]
发表于 2009-11-06 09:29 |只看该作者
可以在系统日志里查询,/var/log/messages

论坛徽章:
0
4 [报告]
发表于 2009-11-06 09:48 |只看该作者

回复 #1 zhyg6516 的帖子

在子脚本中的关键处要有出错判断, 出错后退出并返回"1",如 exit 1 或 return 1.
否则主脚本获得的只能是子脚本执行最后一条命令时成功与否的状态.

[ 本帖最后由 lijizheng 于 2009-11-6 09:50 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-11-06 09:55 |只看该作者
原帖由 zhyg6516 于 2009-11-5 22:08 发表
有一个主脚本 Main.sh
调用一个子脚本 sub.sh

主脚本如何得到子脚本是否执行成功,还是失败的状态。 用$?在下面的状态好像不行。

#!/bin/sh

sh sub.sh
echo $?

--------------
#!/bin/sh

#  ...


可以在 sub.sh 最后写个 echo "run sucess ,ok" > /path/ok.txt

论坛徽章:
0
6 [报告]
发表于 2009-11-06 10:00 |只看该作者
加标识吧,例如:echo "000000"在容易出错的位置加

论坛徽章:
0
7 [报告]
发表于 2009-11-06 10:03 |只看该作者
一方面,可以使用tag文件;另一方面也可以在调用上考虑下:使用子shell还是引用进主shell来。

论坛徽章:
0
8 [报告]
发表于 2009-11-06 14:13 |只看该作者

回复 #4 lijizheng 的帖子

是的用exit ## 可以用,return 不支持。 我用的是sh 3。2 在fedora8.

除此之外,可以用环境变量或者文件去设置返回值

谢谢大家,问题解决了!

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2009-11-16 21:27 |只看该作者
可以使用文件lock来试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP