gpt4 book ai didi

arrays - bash 关联数组——包含值对的变量

转载 作者:行者123 更新时间:2023-12-02 20:36:12 27 4
gpt4 key购买 nike

我有一个如下所示的文件:

stringtests (6 tests)
alphatests (1 tests)
arraytests (100 tests)

我可以提取并翻译成:

["stringtests"]="6"
["alphatests"]="1"
["arraytests"]="100"

我将它们放在变量中(“测试”):

~> tests="[\"stringtests\"]=\"6\" [\"alphatests\"]=\"1\" [\"arraytests\"]=\"100\""

然后我尝试使用变量将它们放入关联数组中,但出现错误:

~> declare -A arr=( $tests )
-bash: arr: ["stringtests"]="6": must use subscript when assigning associative array
-bash: arr: ["alphatests"]="1": must use subscript when assigning associative array
-bash: arr: ["arraytests"]="100": must use subscript when assigning associative array

“eval”也不起作用:

declare -A arr=( $(eval echo $tests) )
-bash: arr: [stringtests]=6: must use subscript when assigning associative array
-bash: arr: [alphatests]=1: must use subscript when assigning associative array
-bash: arr: [arraytests]=100: must use subscript when assigning associative array

但是,如果我直接输入值,它就可以工作:

~> declare -A arr=( ["stringtests"]="6" ["alphatests"]="1" ["arraytests"]="100" )
~> echo ${arr[@]}
1 100 6
~> echo ${!arr[@]}
alphatests arraytests stringtests

有可能做到这一点吗?

最佳答案

替换

declare -A arr=( $tests )

declare -A arr='('$tests')'

tests="[\"stringtests\"]=\"6\" [\"alphatests\"]=\"1\" [\"arraytests\"]=\"100\""
declare -A arr='('$tests')'
declare -p arr

输出:

declare -A arr='([alphatests]="1" [arraytests]="100" [stringtests]="6" )'

关于arrays - bash 关联数组——包含值对的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47040159/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com