我的主脚本是这样开始的:
#!/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
正如延斯在评论中指出的那样,括号是无用的。