2010-02-15 2 views
1

quand je le lance dans le terminal (bash)imprime écho sur script dans -e

echo -e ."\c" 

imprime . et supprime le saut de ligne.

Quand je lance le script suivant (tout le code)

echo -e ."\c" 
echo -e ."\c" 

il imprime .. et supprime les sauts de ligne. Lorsque je l'exécute dans un script avec le shebang (!#/bin/sh), il imprime -e . -e . et supprime le saut de ligne.

Pourquoi? et comment puis-je empêcher cela?

EDIT: Je veux empêcher les « s de -e imprimer, de sorte que ma sortie doit être . .

+0

est votre ligne de shebang effectivement '#!/Bin/echo'? dans ce cas, c'est probablement dû au fait que echo est un built-in, et le fichier shebanged exécute en fait un binaire, qui n'interprète pas le -e. – falstro

+0

non, son '#!/Bin/sh', aussi, la balise -e fonctionne réellement, mais elle l'imprime toujours. –

+0

Juste clarifier ici: quel résultat vous attendiez-vous à voir, et quelle partie essayez-vous d'empêcher? –

Répondre

1

changer votre tralala script à #!/bin/bash au lieu de #!/bin/sh et voir si cela fonctionne

+1

ou utilisez/bin/echo si vous voulez laisser shebang intacte – shuvalov

+0

changer/bin/sh est plus sûr car il y a des choses qui ne fonctionneront pas avec sh si utilisé dans bash. – ghostdog74

+0

étant donné que j'ai écrit et testé le script en utilisant sh, est-il possible que quelque chose peut se casser en utilisant bash? (c'est discutable maintenant, puisque tout fonctionne après avoir changé en bash) –

1

vous devez donner le chemin absolu pour faire écho si votre ligne de tralala invoque sh. Ou change juste le shebang pour utiliser bash.