Quando eu echo $something >> file.txt
, uma nova linha será anexada ao arquivo.
E se eu quiser acrescentar sem uma nova linha?
bash
redirection
onemach
fonte
fonte
echo $something
, o comportamento dele depende daIFS
variável e você pode acabar com o caráter de desaparecimento. Você pode tentar o seguinte:var="hello world"; echo $var
(dois espaços entre olá e mundo) ouvar="hello world"; IFS='l'; echo $var
ouvar="-e hello \\n world"; echo $var
. Para resolver isso, coloque aspas duplas em torno da variável assim:,echo "$var"
ou useprintf
.Respostas:
É para isso que
echo -n
serve.fonte
cat
? (por exemplo, quando você tem um arquivosomething.txt
em vez de uma variável$something
)printf
é muito flexível e mais portátil queecho
. Como nas implementações C / Perl / etc, se você não finalizar a sequência de formatação com\n
nenhuma nova linha será impressa:fonte
Se você estiver usando a saída do comando, poderá usar xargs em combinação com echo
fonte
tr
é outra alternativa.Se você estiver usando
echo
como sua entrada, pode se safar de qualtr -d '\n'
.Essa técnica também funciona ao canalizar a saída de outros comandos (com apenas uma única linha de saída). 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 mostrando que isso funciona.
Nova linha incluída:
Nova linha do UNIX:
Estilo DOS:
Testado com BSD
tr
e GNUtr
.fonte