Estou tentando criar um script Linux BASH simples, mas observe que o bash está adicionando \r a cada string e, se eu tentar removê-lo com 'tr', basta adicionar um novo! Aqui está meu roteiro
#!/bin/bash
OUTFILE=$(echo -n `date +"%Y-%m-%d_%H-%m-%S"`)
ASD='DDD'
echo -n "DATE [$OUTFILE]"
echo -n "DDD [$ASD]"
e aqui está a saída
bash -x backup-datadir.sh
+++ date +%Y-%m-%d_%H-%m-%S
++ echo -n 2020-03-09_13-03-44
+ OUTFILE=$'2020-03-09_13-03-44\r'
+ ASD=$'DDD\r'
' echo -n 'DATE [2020-03-09_13-03-44
' echo -n 'DDD [DDD-03-44
Por que esse \r extra está aparecendo? O ] desapareceu porque foi substituído após a nova linha. Eu nunca vi isso antes...
Seu script é um arquivo de texto DOS, o que significa que contém um caractere de retorno de carro (geralmente escrito
\r
) no final de cada linha. Arquivos de texto Unix não têm isso, e quando um sistema Unix está produzindo tal caractere, ele faz com que a posição do cursor se mova para o início da linha. A saída adicional para essa linha substituirá o que foi emitido anteriormente.Converter o script em um arquivo de texto Unix resolverá seu problema:
(não há nova linha após a saída na última linha devido ao uso de
echo -n
).(não há nova linha após a saída na última linha devido ao uso de
echo -n
).