我正在尝试加强我的通知脚本。脚本的工作方式是我将它放在一个长时间运行的 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 一起使用。