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

linux – 如何在管道中获取第一个命令的退出状态?

发布时间:2020-12-13 19:22:47 所属栏目:Linux 来源:网络整理
导读:参见英文答案 Pipe output and capture exit status in Bash????????????????????????????????????15个 我做了一个简单的脚本: $more test.bash#!/bin/bashecho testexit 1 当我运行脚本时,退出状态应为1 $/tmp/test.bashecho $?1 但是当我按照以下方式运行

参见英文答案 > Pipe output and capture exit status in Bash????????????????????????????????????15个
我做了一个简单的脚本:

$more test.bash
#!/bin/bash
echo test
exit 1

当我运行脚本时,退出状态应为1

$/tmp/test.bash
echo $?
1

但是当我按照以下方式运行时

/tmp/test.bash | tr -d 'r' 1>>$LOG 2>>$LOG
echo $?
0

退出状态为0,(不符合预期1)

似乎退出状态来自tr命令.
但我想要的是从脚本中获取退出状态 – test.bash.

为了从脚本中获取正确的退出状态,而不是从管道后面的命令中获取正确的退出状态,我需要在语法中添加/更改什么?

最佳答案
使用PIPESTATUS数组:

$ls foo | cat
ls: foo: No such file or directory
$echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
2 0

注意:PIPESTATUS是一种基础(即不是POSIX).

(编辑:李大同)

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

    推荐文章
      热点阅读