Como o $ {! #} funciona no bash para obter o último argumento de linha de comando?

17

No Guia Avançado de Roteiro de Script, para obter o último argumento de linha de comando:

Or: lastarg=${!#} This is an indirect reference to the $# variable.
Note that lastarg=${!$#} doesn't work.

    
por trogdor 19.05.2018 / 20:21

1 resposta

25

Como diz, é uma referência indireta. Tome o seguinte exemplo:

$ var=test
$ test='Hello, world'
$ echo ${!var}
Hello, world

Agora, se eu fosse definir os seguintes parâmetros posicionais:

$ set -- one two three

E $# representará o número total de parâmetros posicionais:

$ echo $#
3

Isso significa que quando eu chamo de ${!#} , estou dizendo o valor do parâmetro chamado 3 :

$ echo ${!#}
three
    
por 19.05.2018 / 20:41

Tags