如何在zsh中添加关联数组?

8

我正在尝试更改zsh关联数组的元素,但是我找不到正确语法的任何线索。

相当于PHP的代码是

$assoc['key'] = 'newvalue';

但是我该如何在zsh中实现呢?

文档似乎非常混乱,因为它假定一旦您设置了关联数组,就永远不想更改它。

编辑:这就是我想做的事情

% noglob ZSH_HIGHLIGHT_STYLES[globbing]='fg=yellow' zsh: command not found: ZSH_HIGHLIGHT_STYLES[globbing]=fg=yellow

$ZSH_HIGHLIGHT_STYLES由zsh-syntax-highlighting插件定义。


你为什么要在赋值语句中使用 noglob(一个预命令修饰符)? - chepner
脑子有点短路,我想——试图避免不得不转义方括号。结果证明你其实不需要这样做,而我之前看到的例子是多余的反斜杠。谢谢! - John Y
1个回答

14

假设你已经有一个关联数组,那么实际上很简单。

typeset -A assoc
assoc[key]=newvalue

1
这个能不能用一行代码完成?我在想 typeset -A assoc=[key1]=newvalue1 [key2]=newvalue2 - Solidtubez
6
可以使用typeset -A assoc=(key1 newvalue1 key2 newvalue2)来进行赋值操作。 - chepner
1
@chepner 我更喜欢这样编写:typeset -A assoc=([key1]=new_value1 [key2]=new_value2) - Franklin Yu
有趣的是,看起来最兼容的语法是@chepner编写的:typeset -A assoc=(key1 newvalue1 key2 newvalue2)。@Franklin提供的版本似乎在Ubuntu(zsh 5.4.2(x86_64-ubuntu-linux-gnu))上无法正常工作。 - oscaroscar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接