在 zsh 中,我在一个变量中有一个 glob 模式,我想定义另一个变量来根据该模式执行文件名生成。有没有办法在不生成子 shell 的情况下做到这一点?
以下操作无效:
x=foo*
y=$~x
显然我可以做到
x=foo*
y=$(echo $~x)
并开始执行常规完成行为。但这个问题的重点是避免产生子shell,这似乎是不必要的。
过去几天,这个问题在 stackoverflow.com 上没有得到任何回复,所以我想我可以尝试在这里提问。
答案1
如果你创建y
一个数组,参数$x
就会扩展:
$ x=foo*
$ y=($~x)
$ print -l $y
foo1
foo2
如果需要单个字符串,请用空格连接数组的值:
$ ys=${(j: :)y}
$ print -l $ys
foo1 foo2