Respuestas:
Para eso echo -n
es eso .
cat
? (por ejemplo, cuando tiene un archivo en something.txt
lugar de una variable $something
)
printf
Es muy flexible y más portátil que echo
. Al igual que las implementaciones de C / Perl / etc., si no termina la cadena de formato con \n
ninguna línea nueva se imprime:
printf "%s" "$something" >> file.txt
Si está utilizando la salida del comando, puede usar xargs en combinación con echo
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr
Es otra alternativa.
Si está utilizando echo
como entrada, puede escapar de cuál tr -d '\n'
.
Esta técnica también funciona al canalizar la salida de otros comandos (con una sola línea de salida). Además, si no sabe si los archivos tienen terminaciones de línea UNIX o DOS, puede usarlos tr -d '\n\r'
.
Aquí hay algunas pruebas que muestran que esto funciona.
Newline incluido:
something='0123456789' ; echo ${something} | wc -c
11
Línea nueva 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
Probado con BSD tr
y GNU tr
.
echo $something
, su comportamiento depende de laIFS
variable, y podría terminar con un carácter que desaparece. Puede intentar lo siguiente:var="hello world"; echo $var
(dos espacios entre hola y mundo) ovar="hello world"; IFS='l'; echo $var
ovar="-e hello \\n world"; echo $var
. Para resolver eso, ponga comillas dobles alrededor de la variable como esta:,echo "$var"
o useprintf
.