加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash中干净地转储关联数组内容的简单方法?

发布时间:2020-12-15 20:57:17 所属栏目:安全 来源:网络整理
导读:在zsh中,我可以使用单个命令轻松转储关联数组的内容: zsh% typeset -A foozsh% foo=(a 1 b 2)zsh% typeset foofoo=(a 1 b 2 ) 然而,尽管搜索高低,我能找到的最好的是declare -p,其输出包含声明-A: bash$typeset -A foobash$foo=([a]=1 [b]=2)bash$declare
在zsh中,我可以使用单个命令轻松转储关联数组的内容:

zsh% typeset -A foo
zsh% foo=(a 1 b 2)
zsh% typeset foo
foo=(a 1 b 2 )

然而,尽管搜索高低,我能找到的最好的是declare -p,其输出包含声明-A:

bash$typeset -A foo
bash$foo=([a]=1 [b]=2)
bash$declare -p foo
declare -A foo='([a]="1" [b]="2" )'

有没有一种干净的方法来获得像zsh输出(理想情况下foo =(a 1 b 2)或foo ='([a] =“1”[b] =“2”)’),最好不要求助于字符串操作?

解决方法

似乎除了字符串操作之外没有办法做到这一点.但至少我们每次都可以避免使用sed进程,例如:

dump_assoc_arrays () {
    for var in "$@"; do
        read debug < <(declare -p $var)
        echo "${debug#declare -A }"
    done
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读