2016-08-01 70 views
1

訪問一個位置參數,我想訪問使用變量的位置參數。通過可變

即,如果我定義一個變量爲1,我想要訪問所述第一位置參數,如果我把它定義爲2 I要訪問的第二位置參數。

例如: 慶典script.bash ARG1參數3

var=2 
echo $var // will only echo no. 2 
??? // insert your command to echo the 2nd positional parameter (arg2) 

才能做到這一點?

+0

是的!謝謝。但是,這只是爲了方便其他讀者 - 你訪問它是這樣的:$ {!VAR},即EHCO $ {VAR!}迴音必ARG2 –

+0

但是,該解決方案將使腳本移植性較差,看到後面我的答案的評論。 – sjsam

回答

2

[[ "$var" -eq "1" ]] && echo "$1" #for positional parameter 1 

等等,或者你可以做到這一點象下面這樣:

#!/bin/sh 
var=2 
eval echo "\$${var}" # This will display the second positional parameter an so on 

編輯

我怎麼用這個,如果我真的需要訪問回聲之外。爲 例如 「如果[-f \ $$ {VAR}]」

你已經指出了它的最佳途徑的方法:

var=2 
eval temp="\$${var}" 
if [ -f "$temp" ] # Do double quote 
then 
#do something 
fi 
+0

恩,這在一般情況下不是很好的擴展性。 – tripleee

+1

Bash有'$ {VAR!}'避免使用eval – 123

+0

@tripleee:請參閱更新。 – sjsam