我將一個變量傳遞給從配置文件加載的函數。這個變量反過來傳遞給一個grep。我已經嘗試了幾種方法來擴展搜索變量($ 1),但似乎沒有任何工作,但要搜索的文件工作正常($ 2)。變量傳遞給函數的grep
有人可以告訴什麼是正確的方式呈現變量的grep函數。我曾嘗試 「$ 1」, 「$ {1}」,$ 1,$ {1},「$ {!1}基於答案
UPDATE我已經更新了script.sh到refelect實際腳本複雜性,因爲它仍然無法正常工作。
感謝 藝術
工作代碼不變量RouteTableId
MyVar=$(grep -m 1 "RouteTableId" $2)
不工作代碼變量RouteTableId
config.file
myTerm="RouteTableId"
myFile="my.file"
script.sh
. config.file
myFunction(){
mySubFunction(){
myVar=$(grep -m 1 "$1" $2)
echo $myVar
}
mySubFunction ${!1} ${!2}
}
myFunction "myTerm" "myFile"
UPDATE 我已經做了一些測試,它原來當在fu之間傳遞變量的時候在某些情況下,如果其中一個序列爲空,則編號順序會改變。例如,如果我打電話myFunction的與下文中,將第二變量被空
myFunction "myTerm" "blah" "myFile"
然後myFunction的將看到以下
echo "${!1}, ${!2}, ${!3}"
RouteTableId,,my.file
,然後使這對mySubFunction
mySubFunction ${!1} ${!3}
從給within mySubFunction
echo "${!1}, ${!2}, ${!3}"
RouteTableId,my.file,
所以它看起來在命令中刪除了空值,隨後的變量以數字順序被提前。 如果有人可以驗證並解釋爲什麼我會感激它。
THX 藝術
使用這一個「$ 1」 – tinySandy 2014-12-18 22:32:30
@Ed,很高興我能帶來一些新的傑出的職業生涯:)。是的,有幾個子功能在其他處理選項上被調用。快樂的節日! – 2014-12-18 22:56:18
@artvanderlay你確定你可以使用這樣的子函數?不是100%,但很確定你不能在函數中聲明一個函數。即使你可以,但我認爲最好是將它們聲明爲單獨的函數,然後只需在另一個包括電話。 – 2014-12-19 00:11:57