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?
Quando faccio echo $something >> file.txt
, una nuova linea sarà aggiunta al file.
Cosa succede se voglio aggiungere senza una nuova linea?
Ecco a cosa serve echo -n
.
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
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
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
.