Forum Programmation.autre Bug possible de bash 3.2

Posté par  .
Étiquettes : aucune
0
16
jan.
2007
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:

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  . Évalué à 2.

    Mon deuxième cas qui marche est celui la:

    a="b" ; [ "${a:1}" == "" ] && echo "empty" || echo "non-empty"
  • # Version exacte ?

    Posté par  . Évalué à 1.

    Moi je dirais bug, oui, mais il a déjà dû être corrigé quelque part. En tout cas, rien de tel ici, avec cette version :

    % 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  . Évalué à 2.

      J'ai pensé que ça pouvait être lié au fait que je suis tout en UTF-8.

      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.