参见英文答案 > 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).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。