如何在bash中回显数组中的所有值

时间:2022-05-21 19:32:51

I am making a bash script using dialog. My script make the difference between files in two tar.gz. Each add files are put in an array and each delete files are put in an other array.

我正在使用对话框制作一个bash脚本。我的脚本在两个tar.gz中区分文件。每个添加文件都放在一个数组中,每个删除文件都放在另一个数组中。

All files are add in my two array and when I want echo them it's works

所有文件都添加到我的两个数组中,当我想要回显它们时,它是有效的

echo ${tabAjout[@]}
echo ${tabSuppr[@]} 

The output is :

输出是:

bonjour.txt.gpg test2.txt.gpg test.txt.gpg
hello.txt.gpg

Now I want add this in msgbox.

现在我想在msgbox中添加它。

function affiche_message(){
    #Personnalisation de la fenêtre
    $DIALOG --title "$1" \
            --msgbox "$2" 20 45
}

Call function :

通话功能:

affiche_message "Title" "Delete : ${tabSuppr[@]} \n\n Add : ${tabAjout[@]}"

When I run my script the msgbox contains only the first values of the array. If I change ${tabAjout[@]} by ${#tabAjout[@]} the dialog windows echo that array contains 3 values.

当我运行我的脚本时,msgbox只包含数组的第一个值。如果我通过$ {#tabAjout [@]}更改$ {tabAjout [@]},则对话框窗口回显该数组包含3个值。

1 个解决方案

#1


23  

Use * as the subscript to expand the array as a single word:

使用*作为下标将数组扩展为单个单词:

"${tabSuppr[*]}"

See man bash for explanation.

请参阅man bash进行解释。

#1


23  

Use * as the subscript to expand the array as a single word:

使用*作为下标将数组扩展为单个单词:

"${tabSuppr[*]}"

See man bash for explanation.

请参阅man bash进行解释。