Zsh将命令输出读取到换行符上的数组拆分

Ros*_*hur 3 zsh

我有一个输出一堆东西的命令,例如运行mycmd会给:

foobar
derp derp
like so
etc
Run Code Online (Sandbox Code Playgroud)

其中一些行将包含空格.

如何将这些读入zsh中的数组,以便${arr[1]}给出foobar,${arr[2]}给出derp derp等等.

我尝试了类似的东西,但它似乎将数组拆分为字符而不是换行符.

IFS=$'\n' read -d '' -r arr <<< "$(mycmd)"
Run Code Online (Sandbox Code Playgroud)

${arr[1]}给予f应该给予的时间foobar

Ros*_*hur 6

好吧,其实很简单:

IFS=$'\n' arr=($(mycmd))
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。我得到了另一种方法,即 `arr=(${(f)"$(mycmd)"})` 或分两步 `tmp=$(mycmd)`, `arr=(${(f)tmp}) ` (4认同)