Risposte:
Questo è ciò che echo -nserve.
cat? (ad esempio quando si dispone di un file something.txtanziché di una variabile $something)
printfè molto flessibile e più portatile di echo. Come il C / Perl / etc implementazioni, se non si termina la stringa di formato con \nallora nessun capo ':
printf "%s" "$something" >> file.txt
Se stai usando l'output del comando, puoi 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 echocome input puoi scappare quale tr -d '\n'.
Questa tecnica funziona anche quando si esegue il piping dell'output da altri comandi (con una sola riga di output). Inoltre, se non sai se i file hanno terminazioni di linea UNIX o DOS puoi usare tr -d '\n\r'.
Ecco alcuni test che dimostrano che funziona.
Newline inclusa:
something='0123456789' ; echo ${something} | wc -c
11
Newline UNIX:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
Stile DOS:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
Testato con BSD tre GNU tr.
echo $something, il suo comportamento dipende dallaIFSvariabile e potresti finire con il carattere che scompare. Puoi provare quanto segue:var="hello world"; echo $var(due spazi tra ciao e mondo) oppurevar="hello world"; IFS='l'; echo $varoppurevar="-e hello \\n world"; echo $var. Per risolverlo, inserisci le doppie virgolette attorno alla variabile in questo modo:echo "$var"oppure usaprintf.