bash – 在另一个脚本中获取last shell命令的退出代码
发布时间:2020-12-15 09:08:20 所属栏目:安全 来源:网络整理
导读:我试图加强我的通知脚本。脚本的工作方式是,我把它放在一个长时间运行的shell命令后,然后各种通知在长时间运行的脚本完成后被调用。 例如: sleep 100; my_notify 这将是很好得到长时间运行脚本的退出代码,问题是调用my_notify创建一个新的进程,没有访问
我试图加强我的通知脚本。脚本的工作方式是,我把它放在一个长时间运行的shell命令后,然后各种通知在长时间运行的脚本完成后被调用。
例如: sleep 100; my_notify 这将是很好得到长时间运行脚本的退出代码,问题是调用my_notify创建一个新的进程,没有访问$?变量。 比较: ~ $: ls nonexisting_file; echo "exit code: $?"; echo "PPID: $PPID" ls: nonexisting_file: No such file or directory exit code: 1 PPID: 6203 对比 ~ $: ls nonexisting_file; my_notify ls: nonexisting_file: No such file or directory exit code: 0 PPID: 6205 my_notify脚本中有以下内容: #!/bin/sh echo "exit code: $?" echo "PPID: $PPID" 我正在寻找一种方法来获得上一个命令的退出代码,而不改变命令的结构太多。我知道的事实,如果我改变它的工作更像时间,例如。 my_notify longrunning_command …我的问题会解决,但我实际上喜欢,我可以在命令结束时粘,我担心第二个解决方案的并发症。 这可以做,或者是从根本上与shell工作方式不兼容? 我的shell是zsh但我想它使用bash以及。
你真的需要使用一个shell函数来完成它。对于一个简单的脚本,它应该很容易使它工作在zsh和bash。只需将以下内容放在一个文件中:
my_notify() { echo "exit code: $?" echo "PPID: $PPID" } 然后从您的shell启动文件中导出该文件。虽然既然这将从你的交互式shell中运行,你可能想使用$$而不是$ PPID。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |