2017-04-06 64 views
0

主要脚本启动这样的:猛砸重定向停止工作(使用“设置-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都是。

我可以看到所有的输出,包括调试(设置-x)将被重定向到文件trace.log的

但我有一个代码行打破这种行为。我曾经从源文件中定义的一个函数中调用它,但我也试图将它直接放在文件中:该行总是似乎打破了重定向到trace.log的行为。

这里是行:

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

这里是trace.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 

你猜这里有什么问题吗? 谢谢

+0

为什么你运行'find |在'()'的子shell中使用xargs? – Jens

+0

看起来像改变行(找到$ REP_FRONTAL -type f -print0 | xargs -0 -n 10 -P 4 dos2unix>/dev/null 2&> 1)完成这项工作。我想这是因为xargs的-0选项。有人可以解释如何在不将标准输出发送到/ dev/null的情况下中断重定向吗? – Maxx

+0

子壳部分实际上是试图解决我的问题,我想这是不需要的。 – Maxx

回答

0

工作过: 不知道为什么,但我会很感激知道。 接受的答案应该交给谁解释。

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

正如Jens在评论中指出的那样,括号没有用处。