Je veux remplacer \ n par un caractère.
echo -n "s\n" |tr "\n" "a"
s\n
Pourquoi ne peut pas obtenir sa comme résultat?
Je veux remplacer \ n par un caractère.
echo -n "s\n" |tr "\n" "a"
s\n
Pourquoi ne peut pas obtenir sa comme résultat?
Réponses:
De man echo:
-epermettre l'interprétation des échappements antislash
Votre écho peut être un shell intégré (essayez type echo). Si oui, utilisez help echoplutôt que man echo. Mais il devrait en être de même pour l' -eoption.
Sans cette option, la \nchaîne est imprimée littéralement et non comme un saut de ligne. Avis trn'a pas besoin d'option spéciale pour fonctionner comme prévu.
Commande fixe:
echo -ne "s\n" | tr "\n" "a"
Un autre utilisateur, Gordon Davisson, a souligné certaines choses. Ils semblent assez importants pour les inclure dans ma réponse pour référence future. À partir de ce moment, tout le mérite revient à Gordon .
Les différentes versions de
echosont très incompatibles en ce qui concerne les échappées et les options. Certains interpréteront des séquences d'échappement sans-e. Certains vont imprimer "-e" dans leur sortie. Certains font… d'autres choses. Pour des choses comme ça, utilisezprintfplutôt (comme dansprintf "s\n"). Voir les spécifications POSIX pourecho, en particulier la section "utilisation de l'application".
echosont très inconsistantes en ce qui concerne les échappements et les options. Certains interpréteront des séquences d'échappement sans-e. Certains vont imprimer "-e" dans leur sortie. Certains font… d'autres choses. Pour des choses comme ça, utilisezprintfplutôt (comme dansprintf "s\n"). Voir les spécifications POSIX pourecho, en particulier la section "utilisation de l'application".