我有一個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. 從子shell腳本中的函數退出到父shell腳本
- 2. bash腳本SFTP退出終止腳本
- 3. 「腳本」命令退出bash腳本
- 4. Bash腳本su退出shell
- 5. bash:退出腳本循環
- 6. Bash腳本退出清理
- 7. 從bash腳本獲取perl腳本的輸出並退出
- 8. bash腳本:`退出0`無法退出
- 9. bash腳本退出,不扔退出
- 10. bash腳本退出從功能
- 11. 從bash腳本中退出git日誌
- 12. Bash腳本從NodeJs腳本返回退出代碼
- 13. bash腳本spwans本身並退出
- 14. shell腳本退出
- 15. 得到python腳本的退出代碼在bash腳本
- 16. Bash shell腳本:我如何退出並重新啓動腳本?
- 17. Bash Tarball腳本退出失敗
- 18. 正常退出表單bash腳本
- 19. 退出bash腳本到終端
- 20. 腳本不會退出錯誤bash ios
- 21. 的bash腳本:退出狀態
- 22. bash腳本在完成之前退出
- 23. 在while循環中退出bash腳本
- 24. Bash退出前運行腳本
- 25. BASH腳本不能正常退出
- 26. 從python退出shell腳本
- 27. 從Bash腳本輸出JSON
- 28. Bash腳本 - 將子腳本stderr重定向到父級的stdout
- 29. 捕獲通過ssh使用shell腳本從父腳本調用的子腳本的退出代碼
- 30. 從bash腳本
從這裏開始看起來像在恐怖 - 孩子殺死父母... :) :)(但是,它也是一個解決方案):) :) – jm666 2013-04-25 13:12:54
^^ Yups ....我曾經有一個要求像這樣:'command1 | (command 2; command3)'&command3應該用SIGINT來殺死command1 :-) – anishsane 2013-04-25 13:17:38