É 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