我正在使用dialog编写一个Bash脚本。我的脚本可以区分两个tar.gz文件中的文件差异。每个添加的文件都被放置在一个数组中,每个删除的文件都被放置在另一个数组中。
所有文件都被添加到我的两个数组中,当我想要输出它们时,它可以正常工作。
echo ${tabAjout[@]}
echo ${tabSuppr[@]}
输出结果为:
bonjour.txt.gpg test2.txt.gpg test.txt.gpg
hello.txt.gpg
现在我想将这个添加到msgbox中。
function affiche_message(){
#Personnalisation de la fenêtre
$DIALOG --title "$1" \
--msgbox "$2" 20 45
}
调用函数:
affiche_message "Title" "Delete : ${tabSuppr[@]} \n\n Add : ${tabAjout[@]}"
当我运行脚本时,msgbox只包含数组的前几个值。如果我将${tabAjout[@]}更改为${#tabAjout[@]},对话框将显示该数组包含3个值。
( IFS=$'%'; ajout="${tabAjout[*]}"; suppr="${tabSuppr[*]}" ; affiche_message "Title" "Delete : ${suppr//%/\\n}\n\nAdd : ${ajout//%/\\n}" ; )
。 - choroba*
作为数组索引时,Bash会将数组展开成一个单词,并以特殊变量$IFS
的第一个字符作为分隔符来分隔元素。 - choroba