用于过程替代的pipefail

时间:2015-10-15 13:18:22

标签: bash

我使用errexitpipefail创建了一个Bash脚本:

set -e
set -o pipefail
diff $FILE <($COMMAND)

如果$COMMAND设置失败,errexit不会终止diff。如果出现错误,diff会生成一个补丁文件,好像$COMMAND的输出为空。

如果diff失败,如何终止$COMMAND生成错误?

1 个答案:

答案 0 :(得分:1)

在这里使用临时文件有两个原因:

  1. 它使$COMMAND更容易发现错误。
  2. 如果需要,它允许diff重新读取部分文件。
  3. trap 'rm file2' EXIT
    if $COMMAND > file2; then
        diff "$FILE" file2
    else
        exit 1
    fi