2011-07-07 57 views
0

我有一個文件的目錄,我想打印出他們的結果並保存到一個文件中。如果我這樣做,我可以轉儲到標準輸出:將這個bash命令的結果發送到一個文件時,我得到一個無限循環

echo "["; 
for i in ./*; do 
    [[ -f $i ]] && cat $i; 
    echo ","; 
done; 
echo "]" 

但是,如果我做的:

echo "[" < myfile.txt; 
for i in ./*; do 
    [[ -f $i ]] && cat $i << myfile.txt; 
    echo "," << myfile.txt; 
done; 
echo "]" << myfile.txt 

我就會陷入無限循環。有任何想法嗎?

+2

您的意思是使用'>'和'>>'而不是'<和'<<'? – Flimzy

回答

3

問題是你正在創建一個文件.,然後讀取同時寫入它。您需要將myfile.txt存儲在與您正在處理的目錄不同的目錄中。

另外,我建議這種方法,因爲你在做什麼較短的形式:

{ echo "["; 
for i in ./*; do 
    [[ -f $i ]] && cat $i; 
    echo ","; 
done; 
echo "]" 
} > ../myfile.txt 
2

假設你正在使用>>,然後在某個點$i將等於myfile.txt,你會嘗試將其附加到自身...

相關問題