ubuntuusers.de

Bash: Zugriff auf letzten Parameter

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9729

Wohnort: Münster

Ich möchte in einem Bash-Skript bzw. in einer Bash-Funktion auf den letzten übergebenen Parameter zugreifen. Die Anzahl der überhaupt übergebenen Parameter ist variabel.

Wie mache ich das? Es geht bestimmt mit einem Ausdruck, der einem altgallischen Fluch ähnelt (also mit '$}[))*$%&!?@??=' +/- Potz-Blitz), aber ich kriege das nicht hin!

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3790

kB Team-Icon

Supporter, Wikiteam
(Themenstarter)
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9729

Wohnort: Münster

Danke für den Link!

Ich habe mich für die Variante ${@ :-1} entschieden, weil …

  • das funktioniert für bash und einige alle Shells (nicht alle lt. Link)

  • es ist knackig kurz

  • und es zeigt aus meiner Sicht am klarsten, was gemeint ist: Nimm das erste Argument von hinten.

Mir war neu, dass man Bash-Arrays sowohl aufsteigend (mit positiven Indizes) als auch rückwärts (mit negativen Indizes) durchlaufen kann.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13211

Es gibt eine Möglichkeit, die für alle Bourne-Shells funktioniert:

1
2
3
4
5
6
#!/bin/sh

for last; do :; done

echo "$last"
echo "args: $*"

Antworten |