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
你猜这里有什么问题吗? 谢谢
为什么你运行'find |在'()'的子shell中使用xargs? – Jens
看起来像改变行(找到$ REP_FRONTAL -type f -print0 | xargs -0 -n 10 -P 4 dos2unix>/dev/null 2&> 1)完成这项工作。我想这是因为xargs的-0选项。有人可以解释如何在不将标准输出发送到/ dev/null的情况下中断重定向吗? – Maxx
子壳部分实际上是试图解决我的问题,我想这是不需要的。 – Maxx