2017-04-06 45 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在評論中指出的那樣,括號沒有用處。