我正在尝试使用Bash脚本创建键值对的字典.我正在尝试使用这个逻辑:
declare -d dictionary
defaults write "$dictionary" key -string "$value"
Run Code Online (Sandbox Code Playgroud)
... $dictionary变量在哪里,但这不起作用.
有没有办法在Bash脚本中创建键值对?
pet*_*hes 131
在bash版本中引入了4个关联数组.
declare -A arr
arr["key1"]=val1
arr+=( ["key2"]=val2 ["key3"]=val3 )
Run Code Online (Sandbox Code Playgroud)
arr数组现在包含三个键值对.Bash是相当有限的,你可以用它们做什么,没有排序或弹出等.
for key in ${!arr[@]}; do
echo ${key} ${arr[${key}]}
done
Run Code Online (Sandbox Code Playgroud)
将遍历所有键值并回显它们.
mat*_*ath 30
如果你可以使用一个简单的分隔符,这是一个非常简单的oneliner:
for i in a,b c_s,d ; do
KEY=${i%,*};
VAL=${i#*,};
echo $KEY" XX "$VAL;
done
Run Code Online (Sandbox Code Playgroud)
在这里i充满了像"a,b"和的字符序列"c_s,d".每个都用空格分隔.之后do我们使用参数替换来提取逗号之前,的部分和之后的部分.
小智 12
在 bash 中,我们使用
declare -A name_of_dictonary_variable
Run Code Online (Sandbox Code Playgroud)
这样 Bash 就知道它是一本字典。
例如你想创建sounds字典,
declare -A sounds
sounds[dog]="Bark"
sounds[wolf]="Howl"
Run Code Online (Sandbox Code Playgroud)
哪里dog和wolf是"keys",并且Bark和Howl是"values"。
您可以使用以下命令访问所有值:echo ${sounds[@]}ORecho ${sounds[*]}
您只能使用以下方式访问所有密钥:echo ${!sounds[@]}
如果您想要特定键的任何值,您可以使用:
${sounds[dog]}
这将为您提供Bark键 ( ) 的值 ( dog)。