O problema é que a substituição do comando não é citada. Quando a substituição de comando usa a saída do comando echo como argumento para o segundo comando echo , os resultados do comando são submetidos à divisão de palavras e globulação de arquivos. Como apontado nos comentários, os caracteres entre colchetes, [127.0.0.1] , corresponderão a qualquer arquivo cujo nome seja exatamente um caractere e seja um dos 1 , 2 , 7 ou 0 (o padrão corresponderia a . apenas o shell ignora os links de diretório . e .. ). Quando criei um arquivo chamado 1 , consegui replicar seu resultado.
Para evitar que os resultados da substituição de comando sejam submetidos a globbing, você deve colocá-lo entre aspas duplas:
echo "$(echo "This will show an IP address in square brackets: [127.0.0.1]")"
Veja também os seguintes artigos relacionados da Wiki de Greg's (particularmente o primeiro que cobre a necessidade de citações duplas dentro e fora da substituição de comando):