Sustitución de la variable bash de la variable seguida de guión bajo


12

La variable BUILDNUMBERse establece en el valor 230. Espero que 230_se imprima para el comando, echo $BUILDNUMBER_pero la salida está vacía como se muestra a continuación.

# echo $BUILDNUMBER_

# echo $BUILDNUMBER
230

Respuestas:


27

El comando echo $BUILDNUMBER_imprimirá el valor de la variable $BUILDNUMBER_que no está establecida (el guión bajo es un carácter válido para un nombre de variable como lo señala Jeff Schaller explícitamente)

Solo necesita aplicar llaves (llaves) alrededor del nombre de la variable o usar la printfherramienta más rígida :

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

PD: Siempre cita tus variables.


1
La documentación y el estándar usan el término "nulo" para una variable establecida en una cadena vacía (en oposición a una variable no establecida). Me tomé la libertad de editar.
ilkkachu

8

Como ya explicó George Vassiliou , es porque está imprimiendo la variable en $BUILDNUMBER_lugar de $BUILDNUMBER. La mejor manera de obtener lo que quieres es usar ${BUILDNUMBER}_como explicó George. Aquí hay algunas opciones más:

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

Sabemos qué contiene la variable, pero no sabemos qué $IFScontiene, por echo $BUILDNUMBER"_"lo que todavía está mal. De los tres, solo printf '%s_\n' "$BUILDNUMBER"es correcto si no sabemos qué $BUILDNUMBERo qué $IFS.
Stéphane Chazelas
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.