Bash substituição de variável de variável seguida de sublinhado

Bash substituição de variável de variável seguida de sublinhado

A variável BUILDNUMBERestá definida com o valor 230. Espero 230_ser impresso para o comando, echo $BUILDNUMBER_mas a saída está vazia conforme mostrado abaixo.

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230

Responder1

O comando echo $BUILDNUMBER_imprimirá o valor da variável $BUILDNUMBER_que não está definida (sublinhado é um caractere válido para o nome de uma variável, conforme explicitamente observado por Jeff Schaller)

Você só precisa aplicar chaves (colchetes) ao redor do nome da variável ou usar a printfferramenta mais rígida:

echo "${BUILDNUMBER}_"
printf '%s_\n' "$BUILDNUMBER"

PS: Sempre cite suas variáveis.

Responder2

Como George Vassiliou jáexplicado, isso ocorre porque você está imprimindo a variável $BUILDNUMBER_em vez de $BUILDNUMBER. A melhor maneira de conseguir o que deseja é usar ${BUILDNUMBER}_como George explicou. Aqui estão mais algumas opções:

$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_

informação relacionada