You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在zsh 5.9中通过nameref创建指定名称的数组函数?

解决Zsh 5.9中无需eval创建指定名称数组的问题

可以用**nameref(名称引用)**来实现,这是Zsh 5.0+支持的特性,完全不需要依赖eval。

实现代码

creator() {
  nameref arr=$1
  arr=(a b c)
}

使用示例

调用函数生成目标数组:

creator myarr

验证数组是否正确创建:

# 输出数组第一个元素
echo $myarr[1]
# 输出数组第二个元素
echo $myarr[2]
# 输出数组第三个元素
echo $myarr[3]

原理说明

  • nameref arr=$1 将函数接收的变量名(如myarr)与本地变量arr绑定,后续对arr的赋值操作会直接作用于目标变量。
  • 你之前使用${(P)name::=(a b c)}失败,是因为${(P)}仅适用于间接引用标量变量,会把括号包裹的内容解析成单个字符串赋值,而非数组元素。

内容的提问来源于stack exchange,提问作者user1934428

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:02:31