zsh:for 循环以换行符分隔的条目

Jam*_*ght 4 zsh array

我有一个变量:

? echo $numholds     
409503
409929
409930
409932
409934
409936
409941
409942
409944
409946
Run Code Online (Sandbox Code Playgroud)

我想做一个 for 循环,但换行分隔不起作用:

? for num in $numholds; do
echo $num ,
echo New Item!
> done                         
409503
409929
409930
409932
409934
409936
409941
409942
409944
409946 ,
New Item!
Run Code Online (Sandbox Code Playgroud)

这甚至发生在我设置IFS=$"\n \t". 我怎样才能使这项工作?

Sté*_*las 10

要在 zsh 中拆分换行符,您可以使用f 参数扩展标志f对于feed),它是 的缩写ps:\n:

for num (${(f)numholds}) print -r New item: $num
Run Code Online (Sandbox Code Playgroud)

您还可以使用$IFS-splitting ,在zsh(与其他类似 Bourne 的 shell 相反)中,您必须使用$=param语法明确要求参数扩展($=看起来有点像一把剪刀):

for num ($=numholds) print -r New item: $num
Run Code Online (Sandbox Code Playgroud)