2012-04-02 15 views
11

Estoy buscando para encontrar el último parámetro posicional. Sé que el número de parámetros es $ $ que lógicamente es el último, pero necesito encontrar y usar lo que está en el último parámetro posicional.¿Cómo puedo encontrar el último parámetro posicional en Linux?

Sería como si $ # = 5, quiero hacer $ 5.

He intentado hacer algo como $$ # o $ {$ #} como conjeturas pero no puedo obtenerlo.

Las instancias en las que necesitaría usarlo están en una declaración if o lo declaro a otra variable o con eco.

Espero que esté claro. Gracias por adelantado.

+0

¿Esto es para una función de shell o está tratando de obtener el último argumento en la línea de comando anterior? – sarnold

+0

puedes hacer: eval echo \ $$ # – wisent

Respuesta

17

Quiere ${!#}, que combina el recuento de argumentos con direccionamiento indirecto.

+1

y 'eval last = \ $$ #' para shells que carecen de indirección a través de '!'. – Idelic

+0

Esto parece ser lo que estoy buscando. Gracias. – leeman24

+0

Y supongo que no puedes asignar t $ {! #} Como una variable si eso es lo que quieres decir. Pero eval last = \ $$ # funcionó para mí. Creo que eso es lo que querías decir con la falta de indirección – leeman24

3

Aquí es otra manera:

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

Dale una prueba:

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

Este parece ser un enfoque más directo:

${@: -1} 

Algunos más información here. No estoy seguro acerca de la portabilidad fuera de Bash.

Cuestiones relacionadas