¿Es un error `echo $TEST` expandir un asterisco en la variable?

¿Es un error `echo $TEST` expandir un asterisco en la variable?

¿Es esto un error de Bash?

$ mkdir test && cd test && echo "a" > "some.file"
test$ echo '*'
*
test$ TEST=$(echo '*')
test$ echo $TEST
some.file

¿Por qué la segunda salida es la resolución de (todos) los nombres de archivos en lugar de solo una salida *literal ? *¿Parece un error en Bash?

Probado en Ubuntu 18.04, versión bash 4.4.19(1). Espere que sea lo mismo en otros sistemas operativos.

Respuesta1

No, no es un error. Tu has demostrado que

echo '*'

producirá un literal *. Por lo tanto, cuando sustituye esta salida, según el siguiente comando

TEST=$(echo '*')

lo pondrá *en la variable $TEST. Entonces cuando tu

echo $TEST

el globo se expandirá aquí. Puede verificar esto ejecutando este último comando, cambiando directorios y luego ejecutándolo nuevamente.

Obtendrás el *resultado si dices

echo "$TEST"

como se explicaaquí, las comillas dobles permiten expandir la variable pero evitan que el globo se expanda.

información relacionada