【发布时间】:2012-10-11 13:52:21
【问题描述】:
我正在尝试增强我的通知脚本。脚本的工作方式是我将它放在一个长时间运行的 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"
我正在寻找一种方法来获取上一个命令的退出代码,而不会过多地改变命令的结构。我知道如果我将其更改为更像time,例如my_notify longrunning_command... 我的问题会得到解决,但我真的很喜欢我可以在命令结束时解决它,我担心第二个解决方案会出现并发症。
这可以做到吗?还是它与 shell 的工作方式根本不兼容?
我的 shell 是 Z shell (zsh),但我希望它也能与 Bash 一起使用。
【问题讨论】: