【问题标题】:How to echo all values from array in bash如何在bash中回显数组中的所有值
【发布时间】:2017-04-30 06:25:59
【问题描述】:

我正在使用对话框制作一个 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 个值。

【问题讨论】:

    标签: arrays bash dialog


    【解决方案1】:

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

    "${tabSuppr[*]}"
    

    请参阅man bash 了解说明。

    【讨论】:

    • 有什么方法可以让每个项目在自己的行上?
    • @zundi:以下似乎可行:( IFS=$'%'; ajout="${tabAjout[*]}"; suppr="${tabSuppr[*]}" ; affiche_message "Title" "Delete : ${suppr//%/\\n}\n\nAdd : ${ajout//%/\\n}" ; )
    • 您的答案得到了我的支持,但“请参阅 man bash 以获得解释。”一点用处都没有……谁能解释一下?
    • @eladsilver:当您使用* 作为双引号中的数组索引时,bash 将数组扩展为一个单词,并以特殊变量$IFS 的第一个字符分隔元素。
    猜你喜欢
    • 2022-11-12
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    相关资源
    最近更新 更多