加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读