Substituição da variável Bash da variável seguida por sublinhado

9

A variável BUILDNUMBER está definida para o valor 230. Espero que 230_ seja impresso para o comando echo $BUILDNUMBER_ , mas a saída está vazia como mostrado abaixo.

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230
    
por Talespin_Kit 11.04.2017 / 11:45

2 respostas

23

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

Você só precisa aplicar colchetes ao redor do nome da variável ou usar a ferramenta printf mais rígida:

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

PS: Sempre cite suas variáveis.

    
por 11.04.2017 / 11:49
7

Como George Vassiliou já explicou , é porque você está imprimindo a variável $BUILDNUMBER_ em vez de $BUILDNUMBER . A melhor maneira de conseguir o que você quer é usar ${BUILDNUMBER}_ como George explicou. Aqui estão mais algumas opções:

$ echo "$BUILDNUMBER"_
230_
$ echo $BUILDNUMBER"_"
230_
$ printf '%s_\n' "$BUILDNUMBER"
230_
    
por 11.04.2017 / 12:29