19 De la Guía avanzada de secuencias de comandos Bash, para obtener el último argumento de línea de comandos: O: lastarg=${!#} Esta es una referencia indirecta a la $#variable. Tenga en cuenta que lastarg=${!$#}no funciona. bash flerb fuente 44 Por otro lado, el ABS está bastante mal visto como referencia; ver wooledge.org/~greybot/meta/abs para la historia de su factoid en el canal irc.freenode.org # bash. La Wiki de Bash-Hackers y la Guía de Bash de Wooledge no son tan infames por la densidad de imprecisiones. Dentro de este último, las referencias indirectas se cubren en detalle en BashFAQ # 6 ; en el primero, wiki.bash-hackers.org/syntax/pe#indirection Charles Duffy 1 Solo una pregunta: ¿no es !$más simple y lo mismo? unxnut Respuestas: 27 Como dice es una referencia indirecta. Tome el siguiente ejemplo: $ var=test $ test='Hello, world' $ echo ${!var} Hello, world Ahora si tuviera que establecer los siguientes parámetros posicionales: $ set -- one two three Y $#representará el número total de parámetros posicionales: $ echo $# 3 Esto significa que cuando lo llamo como ${!#}digo, dame el valor del parámetro llamado 3: $ echo ${!#} three Jesse_b fuente
27 Como dice es una referencia indirecta. Tome el siguiente ejemplo: $ var=test $ test='Hello, world' $ echo ${!var} Hello, world Ahora si tuviera que establecer los siguientes parámetros posicionales: $ set -- one two three Y $#representará el número total de parámetros posicionales: $ echo $# 3 Esto significa que cuando lo llamo como ${!#}digo, dame el valor del parámetro llamado 3: $ echo ${!#} three Jesse_b fuente
!$
más simple y lo mismo?Respuestas:
Como dice es una referencia indirecta. Tome el siguiente ejemplo:
Ahora si tuviera que establecer los siguientes parámetros posicionales:
Y
$#
representará el número total de parámetros posicionales:Esto significa que cuando lo llamo como
${!#}
digo, dame el valor del parámetro llamado3
:fuente