Isso é um bug do Bash?
$ mkdir test && cd test && echo "a" > "some.file"
test$ echo '*'
*
test$ TEST=$(echo '*')
test$ echo $TEST
some.file
Por que a segunda saída é a resolução de (todos) os nomes de arquivo em vez de apenas uma saída *
literal ? *
Parece um bug no Bash?
Tentei no Ubuntu 18.04, versão bash 4.4.19(1)-release. Espere que seja o mesmo em outros sistemas operacionais.
Não, não é um bug. Você mostrou que
produzirá um literal
*
. Portanto, quando você substitui essa saída, conforme o seguinte comandoele vai colocar
*
na variável$TEST
. Então quando vocêo globo se expandirá aqui. Você pode verificar isso executando este último comando, alterando os diretórios e executando-o novamente.
Você obterá a
*
saída se dissercomo explicado aqui , as aspas duplas permitem que a variável seja expandida, mas impedem que o glob se expanda.