2016-08-01 4 views
1

Я пытаюсь получить доступ к позиционному параметру с помощью переменной.доступ к позиционному параметру через переменную

i.e, если я определяю переменную как 1, я хочу получить доступ к 1-му позиционному параметру, если я определяю его как 2, я хочу получить второй позиционный параметр.

пример: Баш script.bash arg1 arg2 arg3

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

это может быть сделано?

+0

Да! Благодарю. Но просто для того, чтобы сделать его проще для других читателей - вы получаете доступ к нему следующим образом: $ {! Var}, т.е. ehco $ {! Var} будет echo 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=2 
eval temp="\$${var}" 
if [ -f "$temp" ] # Do double quote 
then 
#do something 
fi 
+0

Э-э, это не очень масштабируемо в общем случае. – tripleee

+1

У Bash есть '$ {! Var}', чтобы избежать использования eval – 123

+0

@tripleee: см. Обновление. – sjsam