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