Je fais un script bash en utilisant la boîte de dialogue. Mon script fait la différence entre les fichiers de deux tar.gz. Chaque fichier d'ajout est placé dans un tableau et chaque fichier de suppression est placé dans un autre tableau.
Tous les fichiers sont ajoutés dans mes deux tableaux et quand je veux les faire écho, ça marche
echo ${tabAjout[@]}
echo ${tabSuppr[@]}
La sortie est:
bonjour.txt.gpg test2.txt.gpg test.txt.gpg
hello.txt.gpg
Maintenant, je veux ajouter ceci dans msgbox.
function affiche_message(){
#Personnalisation de la fenêtre
$DIALOG --title "$1" \
--msgbox "$2" 20 45
}
Fonction d'appel:
affiche_message "Title" "Delete : ${tabSuppr[@]} \n\n Add : ${tabAjout[@]}"
Lorsque j'exécute mon script, la msgbox contient uniquement les premières valeurs du tableau. Si je change $ {tabAjout [@]} par $ {# tabAjout [@]}, les fenêtres de dialogue font écho à ce tableau qui contient 3 valeurs.
Utilisation *
comme indice pour étendre le tableau en un seul mot:
"${tabSuppr[*]}"
Voir man bash
pour explication.