为什么在zsh中不能用join来展开变量?
我在使用zsh版本5.9时遇到了问题。
arr=(A B)
sep=#
print ${(j:$sep:)arr}
我本来期望看到 A#B,但输出的是 A$sepB。显然,$sep 没有被展开,但我不能从手册中推断出为什么不会发生这样的展开。这是zsh的错误吗?还是有更简单的方式将数组元素拼接起来?
解决方案
如果你想让字符串参数得到进一步的展开,可以使用 p 修饰符:
arr=(A B)
sep=#
print ${(pj:$sep:)arr}
据手册所述:
或者,在这个选项下,字符串参数可以采用 $var的形式,在这种情况下变量的值会被替换。请注意这种形式是严格的;字符串参数不会进行一般的参数展开。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。