我有下面的語句慶典輸出到文件
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc; done
但它一直寫所有的輸出不安慰文件「out.asc」。你可以幫我把輸出重定向到文件而不是屏幕。提前致謝!
我有下面的語句慶典輸出到文件
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc; done
但它一直寫所有的輸出不安慰文件「out.asc」。你可以幫我把輸出重定向到文件而不是屏幕。提前致謝!
這可能是酒被寫入標準錯誤,所以你需要重定向:
for i in `cat i.txt`; do wine ~/run.exe $i.asc 2>> out.asc; done
請注意,在2>>
運營商,這意味着標準錯誤。
這不會將stdout輸出到out.asc。只有stderr會被重定向。 – Lynch 2011-04-28 16:50:39
因此,'>> out.asc 2>&1'會重定向 – 2011-04-28 19:32:01
嘗試重定向標準錯誤(2)到stdout(1)
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>&1; done
也許你有一個標準輸出和埃羅輸出。使用>>
和2>>
將兩個輸出流重定向到您的文件。
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> out.asc; done
你可以任意源重定向到不同的文件:
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> err.asc; done
其他已經回答了你的問題的實際,我想表現出更好的成語來讀取文件的線。
而不是
for i in `cat i.txt`; do
: do something with $i
done
嘗試
while IFS= read -r line; do
: do something with "$i"
done < i.txt
看看到http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html。也許樣品3.6是最適合你的。 – jotapdiez 2011-04-28 16:47:57
你也應該習慣引用你的變量。在這種情況下''$ i「'。這個問題,因爲如果你的變量包含特殊的字符,它不會被轉義。 – Lynch 2011-04-28 16:56:18