Je travaille sur un script Bash et la longueur de la chaîne contenue dans une certaine variable est l'une de mes conditions. La chaîne en cours est W5u7TBTzF17GGFV8DBJHvgAAAAI
. Au départ, j'ai compté la longueur de la chaîne à l'aide de wc -c
:
$ VAR='W5u7TBTzF17GGFV8DBJHvgAAAAI'; echo "$VAR" | wc -c
28
Mais ma condition de script [[ ${#VAR} -eq 28 ]]
ne passe jamais. Ensuite, j'ai décidé de compter les personnages par un. En effet, la longueur de la chaîne est de 27 caractères. La valeur de ${#VAR}
est également 27:
$ echo "${#VAR}"
27
Je me demande donc - d'où vient cette différence?
C'est la façon dont echo
fonctionne. Maintenant faire
echo koko
Vous recevez
georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo koko
koko
Mais echo -n koko
et vous obtenez
georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo -n koko
kokogeorgek@georgek-HP-Pavilion-17-Notebook-PC:~$
Donc, wc
capture également le newline character
. Utilisation
echo -n "${VAR}" | wc -c
Pour obtenir le résultat souhaité. La commande echo
ajoutera le caractère newline
, de sorte que celui-ci sera également comptabilisé. Pour supprimer ceci et obtenir le nombre réel, utilisez l'option -n
.