Parameter zählen

B

bootsector

Grünschnabel
Hi @ all!
Ich bin absoluter Shell-Neuling und steh gleich vor einem schier unlösbar scheinenden Problem:

ich rufe in Script mit unbestimmt vielen parametern auf.
das einzige, was dieses Script machen soll, ist mir die letzten beiden Parameter wieder ausspucken.
Dabei soll auf shift verzichtet werden.

Nun versuche ich einen Weg zu finden, wie ich den Positionsnummern der übergebenen Parametern ($1...$n) keinen festen Wert, sondern einen veränderlichen zuweisen kann
also:

x=$(($#-1))

echo $'$x' #wobei '$x' eben die Positionsnummer des Vorletzten Parameters sein soll


in meinem Kopf funktioniert das, das sieht aber die shell nicht ein...

Kann mir jemand helfen bitte? danke im Voraus
 
Ueber ein Array vielleicht?
Code:
 #> cat test.sh
#!/bin/bash
NUM=$(($#-1))
LAST=$#
echo "$NUM, $LAST"
# echo $$VORLETZTER
echo ${@:$NUM:$LAST}
#> ./test.sh a b c d
3, 4
c d
 
Zuletzt bearbeitet:
Vielen Dank, das hat geholfen!

edit: bei der Lösung von trguene wird mir bei der Ausgabe nur ein Parameter angezeigt... is da vielleicht ein Schreibfehler drin?
 
Zuletzt bearbeitet:
Kompliziertere Mehrfach-Substitutionen können übrigens mit dem Builtin "eval" aufgelöst werden. In Deinem Beispiel wäre das:
Code:
eval echo \$$x
 
edit: bei der Lösung von trguene wird mir bei der Ausgabe nur ein Parameter angezeigt... is da vielleicht ein Schreibfehler drin?
tgruenes Lösung funktioniert bei mir einwandfrei.

Schneller testbar, aber das Gleiche:
Code:
echo ${@:$(($#-1)):$#}
 

Ähnliche Themen

parameter zählen und jeden einer variable zuordnen

[HowTo] TeamSpeak 2 - RC2 - Server (Deutsch/Englisch)

Zurück
Oben