URL: https://linuxfr.org/forums/programmationautre/posts/bug-possible-de-bash-32 Title: Bug possible de bash 3.2 Authors: petit_bibi Date: 2007年01月16日T20:15:47+01:00 Tags: Score: 0 Je pense que c'est un bug de bash 3.2 après l'avoir testé sur différentes distributions. [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: £spaces£ £/spaces£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: £spaces£ £/spaces£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 ?