2012-03-01 08:25:33 +0000 2012-03-01 08:25:33 +0000
84
84

come faccio a echo $something >> file.txt senza ritorno a capo?

Quando faccio echo $something >> file.txt, una nuova linea sarà aggiunta al file.

Cosa succede se voglio aggiungere senza una nuova linea?

Risposte (4)

98
98
98
2012-03-01 08:28:15 +0000

Ecco a cosa serve echo -n.

42
42
42
2012-03-01 14:42:29 +0000

printf è molto flessibile e più portabile di echo. Come le implementazioni C/Perl/etc, se non si termina la stringa di formato con \n allora non viene stampata nessuna newline:

printf "%s" "$something" >> file.txt
7
7
7
2016-12-14 07:52:48 +0000

Se state usando l'output del comando, potete usare xargs in combinazione con echo

/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
0
0
0
2017-05-11 11:41:20 +0000

tr è un'altra alternativa.

Se stai usando echo come input puoi cavartela con tr -d '\n'.

Questa tecnica funziona anche quando si convoglia l'output di altri comandi (con una sola linea di output). Inoltre, se non sapete se i file hanno terminazioni di riga UNIX o DOS potete usare tr -d '\n\r'.

Qui ci sono alcuni test che dimostrano che funziona.

Newline incluso:

something='0123456789' ; echo ${something} | wc -c
11

newline UNIX:

something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10

DOS style:

something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10

Testato con BSD tr e GNU tr.