2017-03-23 43 views

回答

3

爲了補充codeforester's helpful answer

如果您只需要訪問您的功能位置參數,你可以使用數組語法提取感興趣的參數;數組切片語法確實支持算術表達式:

> function f(){ i=1; echo "${@: i+1 : 1}" ; }; f a b 
b 
3

看起來像Bash不允許在變量間接表達式中使用表達式。如何括號擴展中使用它之前遞增的i值,就像這樣:

function f() { i=2; echo "${!i}"; } 

從Bash的手冊:

$ $ {前綴@!}

{前綴*!}擴展爲名稱以前綴開頭的變量名稱,用IFS特殊變量的第一個字符分隔。當使用'@'並且擴展出現在雙引號內時,每個變量名稱將擴展爲單獨的單詞。

+1

我不認爲這是從手動正確的報價。這些擴展到以*'prefix' *開頭的*變量名*的數組。正確的引用是[參數擴展](https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion)的第四段,其中'$ {!prefix *}'和實際上將'$ {!prefix @}'作爲規則的例外。 –

相關問題