O que esta expansão de param fazer?

1

O que exatamente o seguinte faz?

MY_VAR=${MY_INPUT##*$'\n'}
    
por Jim 21.03.2018 / 12:04

1 resposta

2

Exclui a correspondência mais longa da substring *\n do início da string armazenada em MY_INPUT . Observe que * é um curinga, portanto, o resultado é que todas as linhas de MY_INPUT são descartadas, exceto a última, que é armazenada em MY_VAR . O $ antes de '\n' é colocado lá apenas para avaliar \n e considerá-lo como uma nova linha em vez de literalmente os caracteres \ e n .

Alguns exemplos:

MY_INPUT            MY_VAR
"a\nb\nc"        -> "c"
"a\n"            -> ""
"abcde\n\n\ndef" -> "def"

Nota: no segundo exemplo, a última linha está vazia, então MY_VAR é uma string vazia.

Conforme solicitado, outra maneira de fazer isso pode ser:

tail -n1 <<< "$MY_INPUT"

ou:

echo "$MY_INPUT" | tail -n1
    
por 21.03.2018 / 12:13