É para isso que serve o echo -n .
Quando eu echo $something >> file.txt , uma nova linha será anexada ao arquivo.
E se eu quiser acrescentar sem uma nova linha?
printf é muito flexível e mais portátil que% código%. Como as implementações de C / Perl / etc, se você não terminar a string de formato com echo , nenhuma nova linha será impressa:
printf "%s" "$something" >> file.txt
Se você estiver usando a saída do comando, você pode usar xargs em combinação com echo
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr é outra alternativa.
Se você estiver usando echo como sua entrada, poderá ignorar qual tr -d '\n' .
Essa técnica também funciona quando a saída de outros comandos (com apenas uma linha de saída) é canalizada. Além disso, se você não sabe se os arquivos têm terminações de linha UNIX ou DOS, você pode usar tr -d '\n\r' .
Aqui estão alguns testes que mostram que isso funciona.
Newline incluído:
something='0123456789' ; echo ${something} | wc -c
11
Nova linha do UNIX:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
estilo DOS:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
Testado com BSD tr e GNU tr .
Tags bash redirection