Comment faire écho à un ou plusieurs caractères de tabulation en utilisant un script bash script ? Lorsque j'exécute ce code
res=' 'x # res = "\t\tx"
echo '['$res']' # expect [\t\tx]
Je reçois ceci
res=[ x] # that is [<space>x]
Comment faire écho à un ou plusieurs caractères de tabulation en utilisant un script bash script ? Lorsque j'exécute ce code
res=' 'x # res = "\t\tx"
echo '['$res']' # expect [\t\tx]
Je reçois ceci
res=[ x] # that is [<space>x]
Utilisez printf
pas echo
.
Il existe plusieurs versions différentes du echo
commande. Il y a /bin/echo
(qui peut ou non être la version de GNU Coreutils, selon le système), et le fichier echo
est intégrée à la plupart des shells. Les différentes versions ont des moyens différents (ou aucun moyen) de spécifier ou de désactiver l'échappement des caractères de contrôle.
printf
En revanche, la variation est beaucoup moins importante. Il peut exister en tant que commande, typiquement /bin/printf
et il est intégré dans certains shells (bash et zsh l'ont, tcsh et ksh ne l'ont pas), mais les différentes versions sont beaucoup plus similaires les unes aux autres que les différentes versions de echo
sont. Et vous n'avez pas besoin de vous souvenir des options de la ligne de commande (à quelques exceptions près ; GNU Coreutils printf accepts --version
y --help
et le printf intégré de bash accepte -v var
pour stocker la sortie dans une variable).
Pour votre exemple :
res=' 'x # res = "\t\tx"
printf '%s\n' "[$res]"
Et maintenant il est temps pour moi d'admettre que echo
fonctionnera tout aussi bien pour l'exemple que vous demandez ; vous devez simplement mettre des guillemets autour de l'argument :
echo "[$res]"
comme l'a écrit kmkaplan (il y a deux ans et demi, je viens de le remarquer !). Le problème avec tes commandes originales :
res=' 'x # res = "\t\tx"
echo '['$res']' # expect [\t\tx]
n'est pas avec echo
; c'est que le shell a remplacé la tabulation par un espace avant echo
jamais vu.
echo
convient pour une sortie simple, comme echo hello world
mais vous devriez utiliser printf
quand vous voulez faire quelque chose de plus complexe. Vous peut obtenir echo
pour fonctionner, mais le code résultant est susceptible d'échouer lorsque vous l'exécutez avec un autre type d'ordinateur. echo
ou un shell différent.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.