Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/01/2011, à 05:14

ehmicky

Bug de Bash ?

Salut à tous,
Je crois que je viens de tomber sur un bug de Bash :

#!/bin/bash 
b=( "un" "deux" )
printf "${b[*]}"
echo
printf "${b[@]}"
echo
a="${b[@]}"
printf "$a"
echo
echo "${b[@]}"
$ ./sc.sh 
un deux trois
un
un deux trois
un deux trois

printf semble avoir du mal à parser "[@]" et renvoie "$b" et pas "${b[@]}". Qu'en pensez-vous ?
(1 heure pour trouver le problème !)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#2 Le 18/01/2011, à 06:15

chopinhauer

Re : Bug de Bash ?

Toutes les substitutions sont faite par bash avant l'exécution des commande, ainsi le deuxième appel à printf est :

'printf' 'un' 'deux'

(je précise les limites des mots). Le format étant 'un', printf imprime 'un'.

L'option 'set -ex' est ton amie.


Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.

Hors ligne

#3 Le 18/01/2011, à 07:55

ehmicky

Re : Bug de Bash ?

Oops effectivement !
Merci chopinhauer !


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne