2012-04-02 11 views
11

Ich suche nach dem letzten Positionsparameter. Ich weiß, dass die Anzahl der Parameter $ # ist, die logisch die letzte ist, aber ich muss finden und verwenden, was in dem letzten Positionsparameter ist.Wie finde ich den letzten Positionsparameter in Linux

Es wäre wie wenn $ # = 5, ich möchte 5 $ tun.

Ich habe versucht, etwas wie $$ # oder $ {$ #} als Vermutungen zu tun, aber kann es nicht bekommen.

Instanzen, in denen ich sie verwenden müsste, sind in einer if-Anweisung oder in einer anderen Variablen oder mit echo deklariert.

Ich hoffe, das ist klar. Danke im Voraus.

+0

Ist dies für eine Shell-Funktion oder versuchen Sie, das letzte Argument auf der vorherigen Befehlszeile zu erhalten? – sarnold

+0

können Sie: eval echo \ $$ # – wisent

Antwort

17

Sie möchten ${!#}, die die Anzahl der Argumente mit Indirection kombiniert.

+1

und 'eval last = \ $$ #' für Shells, die keine Indirektion über '!' Haben. – Idelic

+0

Dies scheint zu sein, was ich suche. Vielen Dank. – leeman24

+0

Und ich schätze, Sie können nicht t $ {! #} Als Variable zuweisen, wenn das das ist, was Sie meinten. Aber eval last = \ $$ # hat für mich funktioniert. Ich glaube, das ist es, was du mit dem Mangel an Indirektion gemeint hast – leeman24

3

ist hier eine andere Art und Weise:

while [[ "$1" != "" ]];do 
    last_parm=$1 
    shift 
done 
echo $last_parm 

einen Test geben:

$ ./test.sh 1 2 3 4 5 
5 
2

Dies scheint ein direkterer Ansatz:

${@: -1} 

Einige weitere Informationen here. Ich bin mir nicht sicher über Portabilität außerhalb von Bash.

Verwandte Themen