[bibi@nomade ~]$ a="b" ; echo -n "${a:1}" > test.txt
[bibi@nomade ~]$ a="b" ; echo -n "a${a:1}" > test2.txt
[bibi@nomade ~]$ ls -la
-rw-r--r-- 1 bibi bib 2 jan 16 19:57 test2.txt
-rw-r--r-- 1 bibi bibi 0 jan 16 19:55 test.txt
-Le fichier 'test2.txt' mesure deux octets alors que ce devrait être un.
-Il y a donc un octet parasite qui est arrivé, à savoir le 7F.
-ça marchait correctement dans bash 3.0 et celle d'avant.
Exemple dans un script:
a="b" ; [ "x${a:1}" == "x" ] && echo "empty" || echo "non-empty"
ça donnais ''empty' dans bash 3.0, dans mon bash 3.2, 'non-empty'.
En revanche:
a="b" ; [ "x${a:1}" == "x" ] && echo "empty" || echo "non-empty"
'empty' pour les deux bash.
Pour rappelle:
${a:1} signifie en gros de prendre le reste de la chaîne à partir du caractère d'index 1.
Dans mon cas $a vaux 'b' donc ma découpe devrait donner une chaîne vide.
Bug ou pas selon vous ?
# Correction
Posté par petit_bibi . Évalué à 2.
# Version exacte ?
Posté par tgl . Évalué à 1.
% echo $BASH_VERSION
3.2.9(1)-release
Ce qui m'étonne, c'est que je ne vois pas ton bug de décrit dans les commentaires des patches 3.2.x :
ftp://ftp.cwru.edu/pub/bash/bash-3.2-patches/
Ou bien c'est dans un autre patch appliqué par ma distrib (Gentoo), mais pareil, je n'en vois pas trace. Ou bien c'est un bug seulement sur ton architecture peut-être ? (Moi je suis sur x86.)
PS : tiens, c'est marrant comme le monde est petit, je crois bien que tu m'a mis une branlée hier à Frozen-Bubble...
[^] # Re: Version exacte ?
Posté par petit_bibi . Évalué à 2.
Bon j'ai fumé aussi, c'est bash 3.1.17 qui déconne :-(
Le 3.00.16 est ok.
Et le 3.2, j'en sais rien, je vais m'en compiler un pour voir.
Mon archi est aussi x86
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.