2 votes

Bash script Echo -n

Je suis en train d'écrire un bash script, et je veux faire écho à une chaîne de caractères, mais sans qu'une nouvelle ligne soit automatiquement ajoutée à la fin. En lisant la page de manuel, il est dit que le drapeau est -n .

Le problème est que, quand je le fais :

echo -n "My string is here"

La sortie dans le script de bash est :

-n My string is here

Une idée de la raison pour laquelle le -n est édité au lieu d'être traité.

6voto

quanta Points 49664

Vérifiez le Shell que vous utilisez avec :

echo $0

Si c'est le cas /bin/sh changer en /bin/bash avec chsh et réessayez.

http://hints.macworld.com/article.php?story=20071106192548833

1voto

Justin Points 4836

Fonctionne sur CentOS, mais il semble qu'OSX n'aime pas le drapeau -n.

1voto

nullDev Points 1778

echo est étrangement incohérent entre les versions -- différentes versions de /bin/echo, ainsi que les versions intégrées dans divers shells (même différentes versions du même Shell). Certaines versions comprennent les options (comme -n ), certaines versions comprennent les séquences d'échappement à l'intérieur de la chaîne (se terminant par "\c" pour sauter la nouvelle ligne). Certaines versions utilisent un mélange bizarre des deux.

Si vous voulez un comportement cohérent, évitez echo et utiliser printf à la place. C'est un peu plus compliqué, mais c'est beaucoup plus prévisible :

printf "%s" "My string is here"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X