我希望使用teeany command (first command)的输出写入一个文件,但我希望从first command而不是tee命令获得返回代码.

Example 1: The following code will return 1 and it is expected:

cp -unknown-args "hello"
echo "return code is $?"

---output---
cp: invalid option -- 'k'
Try 'cp --help' for more information.
return code is 1

Example 2: The following code will return 0 and it is unexpected:

cp -unknown-args "hello" | tee test.txt
echo "return code is $?"

---output---
cp: invalid option -- 'k'
Try 'cp --help' for more information.
return code is 0

如果first command有任何错误,我想把"Example 2"变成return 1. 这是可能的吗?如果是的话,该怎么做?

推荐答案

try set -o pipefail,这会将非零出口传播到以后的管道成员

Linux相关问答推荐

获取Perl文件::Tail开始在最后流传输文件

UTF-8输入和使用XGetICValues

在正在运行的进程的输出周围添加自定义字符串

在 Bash 中使用 shell 脚本从文件中解析版本号

如何从 2 个文件中获取内容并使用 shell 脚本将该内容附加到新文件中

如何使用 Bash 将随机数据块写入文件

有没有办法定义自定义隐式 GNU Make 规则?

使用 bash 中的数字对 RPM 内核字符串进行版本排序返回不正确的结果

在 bash 中查找匹配多个模式的文件

ftell 在文件描述符上?

如果 bash 中已经存在文件名,则创建新文件但添加数字

在 puppet 中管理 linux 的用户密码

如何更改某些文件模式/扩展名的权限?

如何分析内存使用情况?

在 linux 上查看文件大小

在 Emacs 中匹配括号的命令是什么?

C++:使用 longjmp 和 setjmp 安全吗?

可以通过 SSH 连接的所有用户的列表

Bash:在文件中的特定位置插入一行

编辑文件时保留 samba 共享的文件权限