2016-08-01 20 views
1

Ich versuche mit einer Variablen auf einen Positionsparameter zuzugreifen.Zugriff auf einen Positionsparameter über eine Variable

Wenn ich eine Variable als 1 definiere, möchte ich auf den ersten Positionsparameter zugreifen, wenn ich ihn als 2 definiere. Ich möchte auf den zweiten Positionsparameter zugreifen.

Beispiel: bash script.bash arg1 arg2 arg3

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

dies getan werden kann?

+0

Ja! Vielen Dank. Aber um es anderen Lesern leichter zu machen - Sie greifen darauf folgendermaßen zu: $ {! Var}, dh ehco $ {! Var} wird widerhallen arg2 –

+0

Aber diese Lösung wird das Skript weniger portabel machen, siehe die Kommentare, die meiner Antwort folgen . – sjsam

Antwort

2

Do

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

und so weiter oder man könnte es wie unten tun:

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

bearbeiten

wie verwende ich das, wenn ich tatsächlich zugreifen müssen außerhalb des Echos. für Beispiel "if [-f \ $$ {var}]"

Verfahren Sie es der beste Weg, darauf habe aus:

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

Uh, das ist im allgemeinen Fall nicht sehr skalierbar. – tripleee

+1

Bash hat '$ {! Var}' um eval zu vermeiden – 123

+0

@tripleee: Bitte beachten Sie das Update. – sjsam

Verwandte Themen