bash - Bash:将 (+=) 附加到 nameref (-n) 到哈希键
问题描述
在 bash 5.0.17 中,
s='X'; declare -n s2=s
s2+=YYY; declare -p s
正确产生declare -- s="XYYY"
. 到目前为止,一切都很好。现在,如果我为关联数组键创建一个 nameref 怎么办?
declare -A aa
aa=( [k1]=v1 ); declare -n 'nk1=aa[k1]'
nk1+=YYY; declare -p aa
(我认为引号是必需的,否则会发生文件名扩展——用 测试shopt -s nullglob
)。这产生
declare -A aa=([k1]="v1aa[k1]YYY" )
这种用于声明 nameref(或附加)的语法是否错误?
解决方案
我无法使用bash
4.4.20 进行复制:
$ declare -A aa=( [k1]=v1 )
$ declare -n 'nk1=aa[k1]'
$ nk1+=YYY
$ declare -p aa
declare -A aa=([k1]="v1YYY" )
但是,在bash
5.1.4 的系统上,我得到declare -A aa=([k1]="v1aa[k1]YYY" )
的结果就像您在 5.0.17 中看到的一样。因此,似乎在 5.X 系列中的某个时候引入了一个错误。
推荐阅读
- javascript - SVG 到画布到 .webm,而不是原始清洁
- javascript - 响应式视频以及 flex 中的溢出元素
- vb.net - 如何将字符串拆分为特定顺序的行
- c# - 优化在线面试评估的 PriorityQueue 实施
- java - 基于字段对用户定义的循环链表上的对象进行排序
- node.js - 在nodejs中通过fluent-ffmpeg合并多个视频文件和流
- c++ - 如何使用带有 WSL 的 g++ 增加堆栈大小?(适用于 Linux 的 Windows 子系统)
- websocket - 转发https连接:客户端A->代理服务器B->客户端C->服务器D
- python - 在包含列表值的字典中使用 for 循环和 if 条件
- html - 是否可以将焦点集中在父元素内而不被所有子元素应用但一个特定的?