web-dev-qa-db-fra.com

Comment faire écho à toutes les valeurs du tableau dans bash

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.

17
Mattasse

Utilisation * comme indice pour étendre le tableau en un seul mot:

"${tabSuppr[*]}"

Voir man bash pour explication.

41
choroba