Lors de l'exécution
echo abcd | wc -c
il revient 5
.
Mais le mot abcd
ne fait que 4 caractères.
Est-ce que l' echo
impression d'un caractère spécial après le mot abcd
?
Et puis-je empêcher echo
d'imprimer cela?
text-processing
echo
wc
user78050
la source
la source
printf
mieux queecho
?wc -c
cela ne vous dit pas combien de caractères quelque chose est; il indique seulement combien d'octets il s'agit.Réponses:
echo
imprimer la nouvelle ligne (\n
) à la fin de la ligneAvec certaines
echo
implémentations, vous pouvez utiliser-n
:et tester:
Avec d'autres, vous avez besoin de la
\c
séquence d'échappement:Portablement, utilisez
printf
:(notez que
wc -c
compte les octets, pas les caractères (bien que dans le cas oùabcd
ils sont généralement équivalents). Utilisezwc -m
pour compter les caractères).la source
echo
implémentations (toutes compatibles avec Unix au moins), c'est uniquement lesecho 'abcd\c'
sortiesabcd
.echo -e 'abcd\c'
dans lesecho
implémentations conformes à Unix sortirait-e abcd
.Si vous exécutez
echo
sans l'-n
option, il écrit un caractère de nouvelle ligne après les arguments. Sinon, si vous avez tapéecho foo
, votre prochaine invite de shell apparaîtra à droite defoo
. Il enwc
va de même pour la nouvelle ligne.la source
Par défaut,
echo
imprime un caractère de nouvelle ligne (\n
) après la chaîne (c'est pourquoi vous voyez l'invite du shell sur la ligne suivante au lieu de la même ligne oùabcd
est imprimée.)Vous pouvez essayer d'ajouter un
-n
paramètre àecho
pour désactiver le caractère de nouvelle ligne de fin.la source