O problema é que seus arquivos possuem terminações de linha no estilo DOS / Windows. Como uma solução rápida, substitua:
echo "$(cat "$enabled") |"
Com:
echo "$(tr -d '\r' <"$enabled") |"
Aqui, tr
remove o caractere de retorno de carro antes que o arquivo seja exibido, evitando o problema.
Se os seus arquivos se destinam a ser usados em um sistema Unix, no entanto, seria melhor remover os retornos de carro dos próprios arquivos usando um dos utilitários dos2unix
ou similares.
Exemplo
Vamos criar dois arquivos no estilo DOS:
$ echo 'include sites-availabe/cwrcoding.com.conf;' | unix2dos > sites-enabled/file1
$ echo 'include sites-availabe/cwrcoding.com.conf;' | unix2dos > sites-enabled/file2
Vamos executar o comando original:
$ for enabled in sites-enabled/*; do echo "$(cat "$enabled") |"; echo ==========; done
|clude sites-availabe/cwrcoding.com.conf;
==========
|clude sites-availabe/cwrcoding.com.conf;
==========
Observe a saída desconfigurada.
Com tr
aplicado, recebemos a saída esperada:
$ for enabled in sites-enabled/*; do echo "$(tr -d '\r' <"$enabled") |"; echo ==========; done
include sites-availabe/cwrcoding.com.conf; |
==========
include sites-availabe/cwrcoding.com.conf; |
==========