我有這個問題,我無法得到我的頭。反向語句中的變量
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
我在第二行FILE_PROPERTIES不會改變像我希望它,並在文件完成沒找到例外。 有人會知道這是爲什麼嗎?
或者,以更一般的方式,我們將如何去調用``語句中的變量,以便將其轉換爲輸出?我嘗試過沒有{},沒有任何運氣。
我有這個問題,我無法得到我的頭。反向語句中的變量
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
我在第二行FILE_PROPERTIES不會改變像我希望它,並在文件完成沒找到例外。 有人會知道這是爲什麼嗎?
或者,以更一般的方式,我們將如何去調用``語句中的變量,以便將其轉換爲輸出?我嘗試過沒有{},沒有任何運氣。
你這樣做的方式應該有效。例如,以下應該(試圖)訪問info.txt
和something_else.txt
。請注意,兩個echo
命令是相同的。
#!/bin/sh
FILE_PROPERTIES="info.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
FILE_PROPERTIES="something_else.txt"
echo `grep "ENVOI_MAIL=" ${FILE_PROPERTIES} | cut -d "=" -f "2"`
一個可能的問題是,如果文件名包含空格,它會出現在grep
命令兩個參數。你可以通過使用引號來避免這種情況(反正也不是一個壞主意)。 (大括號不在這種情況下要求,但也有不壞的主意。)
echo `grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2"`
而且,最現代的炮彈支持$(...)
語法比反引號形式更好一點(的一兩件事,它可以被嵌套):
echo $(grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2")
最後,echo
可能是沒有必要,除非你確實需要echo
的治療的空白。你可能會改爲試試這個:
grep "ENVOI_MAIL=" "${FILE_PROPERTIES}" | cut -d "=" -f "2"
(我沒有測試所有這些命令,所以,要當心拼寫錯誤。)
感謝您提供清晰,詳盡且翔實的答案!幫助我理解發生了什麼。現在正在批量生產0403-010。 – y2k 2012-01-18 16:38:04
什麼環境中,這是什麼? 「批處理」標記用於Windows批處理文件,但這看起來不像Windows批處理語法。 – 2012-01-09 18:38:46
@CheranShunmugavel謝謝!錯了,我更新了標籤。 – y2k 2012-01-09 19:51:40
適用於此(bash 4.1.10)。可能依賴於shell的類型和可能的版本。 'export FILE_PROPERTIES =「info.txt」'工作嗎? – 2012-01-09 20:23:26