2011-10-13 42 views
1

我有一個奇怪的問題。我試圖迴應從一個文件到另一個文件的響應。例如,我喜歡使用:呼應星號到文件

# run_location=`find -name 'program.exe'` 
# echo $run_location>storagefile.txt 

因此,我可以保存我的程序所在的位置以備後用。但是現在我遇到了一個問題,我想抓取程序的輸出並將其存儲。唯一的問題是輸出包含很多星號(*),當我回顯*時,它會迴應我目錄中的所有文件名,產生一個亂七八糟的文件。

文件的輸出是:

# ./device -FD 
******************************* 
* Firmware   : 1.0034 * 
* Date    : 011209 * 
******************************* 

,我想保存文件的詳細,是有解決什麼辦法?可能有其他方法將輸出保存到文件中?我知道用星號輸出並不是最好的想法,但我無法控制如何獲取這些數據。

謝謝!

回答

5

shell腳本的重要規則:在應用引號時應該是自由的。因此,對於你的例子:

run_location="`find -name 'program.exe'`" 
echo "$run_location" >storagefile.txt 

如果沒有這些引號,這些得到解釋爲命令行令牌...這將基於的空間存在被切碎,像*模式進行評估。如果它來自用戶,文件或程序的輸出,請引用它。

+0

例如請記住,在嘗試解析命令行的其餘部分之前,它是擴展變量內容的shell。所以你最終做'echo ******* ....'。 –

+0

非常感謝,依然是圍欄這邊的菜鳥。 – Matt

+0

他們不會傷害,但即使您捕獲的輸出包含星號,您也不需要第一行中的雙引號。不過,您確實需要第二行中的引號。 – Idelic