2016-05-15 12 views
2

Ich muss in das Argument von denen einige Benutzertypen drucken. Egal, was ich immer nur eine leere Zeilebash Druck gegeben Skript Argument

echo "Give argument number" 
read number 
[email protected] 
echo ${allV[$number]} 

ich bekommen, was mit diesen wenigen Zeilen falsch? Auch wenn ich das Skript mit ein paar Argumente beginnen und ich nur manuell etw schreiben wie“

echo ${allV[1]} 

wieder alles, was ich bekommen, ist eine leere Zeile.

+0

Ihre Zuweisung zu 'allV' erstellt kein Array; Daher hilft es nicht, es wie ein Array zu indizieren. Verwende 'allV = (" $ @ ")' und 'echo" $ {allV [$ number]} "'. –

Antwort

2

Bash können Sie einen indirekten Verweis verwenden, die auch auf nummerierten Parametern arbeitet:

echo "${!number}" 

Damit können Sie auch die Argumentliste in Scheiben schneiden:

echo "${@:$number:1}" 

Oder Sie könnten die Argumente in ein Array kopieren:

argv=("[email protected]") 
echo "${argv[number]}" 

In allen Fällen werden die Anführungszeichen an Sicherheit grenzender Wahrscheinlichkeit in Fall erforderlich, das Argument enthält Whitespace- und/oder Glob-Zeichen.