shell中是否有一些类似的选项dash
对应于pipefail
in bash
?
或者,如果管道中的命令之一失败(但不会退出它),则获得非零状态的任何其他方式set -e
。
为了更清楚,这里是我想要实现的一个例子:
在示例调试 makefile 中,我的规则如下所示:
set -o pipefail; gcc -Wall $$f.c -o $$f 2>&1 | tee err; if [ $$? -ne 0 ]; then vim -o $$f.c err; ./$$f; fi;
基本上它运行时会打开错误文件和源文件,并在没有错误时运行程序。节省了我一些打字时间。上面的代码片段运行良好,bash
但我较新的 Ubunty 系统使用dash
的似乎不支持pipefail
选项。
如果以下命令组的第一部分失败,我基本上想要一个 FAILURE 状态:
gcc -Wall $$f.c -o $$f 2>&1 | tee err
这样我就可以将其用于if
声明。
有没有其他方法可以实现它?
谢谢!