Bash 重定向停止工作(使用"set -x"调试输出)



我的脚本是这样开始的:

#!/bin/bash
set -x #Debug avec des stacktrace partout
set -u #Erreur si variable non définie
export >$REP_FRONTAL/env.bash
TRACE=$REP_FRONTAL/traces.log
exec >$TRACE 2>&1
source $REP_FRONTAL/lib.sh

其中REP_FRONTAL是一个环境变量。它包含lib.sh 都所在的路径。

我可以看到所有输出,包括调试(set -x(都被重定向到文件跟踪.log

但是我有一行代码会破坏这种行为。我曾经从源 lib.sh 文件中定义的函数调用它,但我也尝试将其直接放在文件中的某个位置:这一行似乎总是破坏重定向到 trace.log 的行为。

这是一行:

(find $REP_FRONTAL -type f -print0 | xargs -0 -n 10 -P 4 dos2unix  2>/dev/null)

这是跟踪的尾巴.log的样子:

+ mkdir -p /somedir/a/b/
+ find /path/in/REP_FRONTAL/variable -type f -print0
+ xargs -0 -n 10 -P 4 dos2unix

然后:文件结束。

从行中删除重定向无济于事:

(find $REP_FRONTAL -type f -print0 | xargs -0 -n 10 -P 4 dos2unix  ) #same result with this line

你能猜出这里出了什么问题吗?谢谢

那行得通:不知道为什么,但我很感激知道。接受的答案应该去谁可以解释。

find $REP_FRONTAL -type f -print0 | xargs -0 -n 10 -P 4 dos2unix > /dev/null 2&1

正如延斯在评论中指出的那样,括号是无用的。

最新更新