2012-04-02 13 views
11

Sto cercando di trovare l'ultimo parametro posizionale. So che trovare il numero di parametri è $ #, che logicamente è l'ultimo ma ho bisogno di trovare e utilizzare ciò che è nell'ultimo parametro posizionale.Come trovare l'ultimo parametro posizionale in Linux

Sarebbe come se $ # = 5, voglio fare $ 5.

Ho provato a fare qualcosa come $$ # o $ {$ #} come ipotesi ma non riesco a ottenerlo.

Le istanze in cui avrei bisogno di usarlo sono in un'istruzione if o la si dichiara a un'altra variabile o con echo.

Spero che sia chiaro. Grazie in anticipo.

+0

È per una funzione di shell o stai cercando di ottenere l'ultimo argomento sulla riga di comando precedente? – sarnold

+0

si può fare: eval echo \ $$ # – wisent

risposta

17

Si desidera ${!#}, che combina il conteggio degli argomenti con riferimento indiretto.

+1

e 'eval last = \ $$ #' per shell che non hanno l'indirezione tramite '!'. – Idelic

+0

Questo sembra essere quello che sto cercando. Grazie. – leeman24

+0

E suppongo che tu non possa assegnare t $ {! #} Come variabile se questo è ciò che intendevi. Ma eval last = \ $$ # ha funzionato per me. Penso che sia quello che intendevi per mancanza di indirezione – leeman24

3

Ecco un altro modo:

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

Dare una prova:

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

Questo mi sembra un approccio più diretto:

${@: -1} 

Alcuni ulteriori informazioni here. Non sono sicuro della portabilità al di fuori di Bash.

Problemi correlati