有没有办法在Bash脚本中创build键值对?

我正在尝试使用Bash脚本创build一个键值对的字典。 我正在尝试使用这个逻辑:

declare -d dictionary defaults write "$dictionary" key -string "$value" 

$dictionary是一个variables,但这不起作用。

有没有办法在Bash脚本中创build键值对?

在bash版本4中引入了关联数组。

 declare -A arr arr["key1"]=val1 arr+=( ["key2"]=val2 ["key3"]=val3 ) 

arr数组现在包含三个键值对。 Bash是相当有限的,你可以用它们做什么,没有sorting或popup等。

 for key in ${!arr[@]}; do echo ${key} ${arr[${key}]} done 

将遍历所有关键值并将其回显出来。

如果你可以使用一个简单的分隔符,一个非常简单的指针是这样的:

 for i in a,b c_s,d ; do KEY=${i%,*}; VAL=${i#*,}; echo $KEY" XX "$VAL; done 

因此i充满了像"a,b""c_s,d"字符序列。 每个空格分隔。 之后,我们使用参数replace来提取逗号前面的部分和后面的部分。

对于持久性键/值存储,您可以使用kv-bash ,这是https://github.com/damphat/kv-bash上的键/值数据库的纯bash实现;

用法

 git clone https://github.com/damphat/kv-bash source kv-bash/kv-bash 

尝试创build一些永久variables

 kvset myName xyz kvset myEmail xyz@example.com #read the varible kvget myEmail #you can also use in another script with $(kvget keyname) echo $(kvget myEmail)