我有一个Bash父脚本,它在意外的输入上调用记录错误的错误记录子脚本。我也希望在发生错误和调用错误脚本时停止执行。但是,如果我从错误处理脚本调用exit
,它不会阻止父脚本执行。我该如何去阻止孩子的父母脚本?Bash - 从子脚本退出父脚本
10
A
回答
10
尝试..
#normal flow
[[ $(check_error_condition ]] && /some/error_reporter.sh || exit 1
所以,
- 当error_reporter将退出状态退出> 0父将终止过
- 如果error_reporter将与状态退出= 0父继续...
你不想stop the parent from a child
(父母通常不喜欢这种行为):),你不是想tell to parent - need stop
和他将停止本身(如果想);)
0
不要试图终止孩子的父母。在子脚本返回后,请在父级中调用exit
。
if [ condition ]; then
/path/to/child.sh
exit 1
fi
或更短
[ condition ] && { /path/to/child.sh; exit 1; }
6
尝试:
在父脚本:
trap "echo exitting because my child killed me.>&2;exit" SIGUSR1
在孩子的CRIPT:
kill -SIGUSR1 `ps --pid $$ -oppid=`; exit
另一种方法是:
在孩子的脚本:
kill -9 `ps --pid $$ -oppid=`; exit
但是,不建议,因为父母需要有大约被杀&一些信息因此如果需要做一些清理。
另一种方式: 而不是调用子脚本,exec
它的。
但是,正如在其他答案中指出的,最简洁的方法是在孩子返回后从父母退出。
相关问题
- 1. “脚本”命令退出bash脚本
- 2. bash:退出脚本循环
- 3. 从bash脚本获取perl脚本的输出并退出
- 4. bash脚本退出从功能
- 5. shell脚本退出
- 6. 得到python脚本的退出代码在bash脚本
- 7. BASH脚本不能正常退出
- 8. bash脚本在完成之前退出
- 9. 在while循环中退出bash脚本
- 10. Bash退出前运行脚本
- 11. 脚本不会退出错误bash ios
- 12. Bash Tarball脚本退出失败
- 13. 捕获通过ssh使用shell脚本从父脚本调用的子脚本的退出代码
- 14. 从bash脚本
- 15. 从bash脚本
- 16. 从bash脚本
- 17. 退出PowerShell脚本
- 18. bash脚本输出
- 19. 防止子进程(HandbrakeCLI)导致父脚本退出
- 20. 从tcl脚本调用bash脚本并返回并退出状态
- 21. 从R脚本运行bash脚本
- 22. 在bash脚本,从一个叫脚本
- 23. 从Bash脚本调用python脚本
- 24. 从PHP脚本运行bash脚本
- 25. 写 “\” 从bash脚本
- 26. 无法捕获ctrl-c退出函数退出bash脚本
- 27. 任何方式退出bash脚本,但不退出终端
- 28. Tcsh脚本不会退出
- 29. 重定向Bash子脚本的输出
- 30. 如何从脚本内部禁止输出bash脚本?
从这里开始看起来像在恐怖 - 孩子杀死父母... :) :)(但是,它也是一个解决方案):) :) – jm666 2013-04-25 13:12:54
^^ Yups ....我曾经有一个要求像这样:'command1 | (command 2; command3)'&command3应该用SIGINT来杀死command1 :-) – anishsane 2013-04-25 13:17:38