Réponses:
C'est pour ça echo -n.
cat? (par exemple lorsque vous avez un fichier something.txtplutôt qu'une variable $something)
printfest très flexible et plus portable que echo. A l'instar des implémentations C / Perl / etc, si vous ne terminez pas la chaîne de formatage avec \naucune nouvelle ligne n'est imprimée:
printf "%s" "$something" >> file.txt
Si vous utilisez le résultat de la commande, vous pouvez utiliser xargs en combinaison avec echo
/sbin/ip route|awk '/default/ { print $3 }' | xargs echo -n >> /etc/hosts
tr est une autre alternative.
Si vous utilisez echovotre entrée, vous pouvez vous échapper tr -d '\n'.
Cette technique fonctionne également lors de l’ajout de sorties à partir d’autres commandes (avec une seule ligne de sortie). De plus, si vous ne savez pas si les fichiers ont des fins de ligne UNIX ou DOS, vous pouvez les utiliser tr -d '\n\r'.
Voici quelques tests montrant que cela fonctionne.
Newline inclus:
something='0123456789' ; echo ${something} | wc -c
11
UNIX newline:
something='0123456789' ; echo ${something} | tr -d '\n\r' | wc -c
10
Style DOS:
something='0123456789' ; echo ${something} | unix2dos | tr -d '\n\r' | wc -c
10
Testé avec BSD tret GNU tr.
echo $something, son comportement dépend de laIFSvariable et vous risquez de vous retrouver avec un caractère qui disparaît. Vous pouvez essayer ce qui suit:var="hello world"; echo $var(deux espaces entre hello et world) ouvar="hello world"; IFS='l'; echo $varorvar="-e hello \\n world"; echo $var. Pour résoudre ce problème, mettez des guillemets doubles autour de la variable comme ceci:,echo "$var"ou utilisezprintf.