如何使用内置的read
在zsh中完成以下代码来收集输出行
ls -l |
{
read total ;
IFS=$'\n' read -dX -A lines # <-- what should be the delimiter to denote EOF
}
具体地说,ls -l
首先将打印一行total nnn
,该行应读入$total
。以下所有行应收集到数组$lines
中。
我应该指定什么为EOF(放在X
的位置)?我的申请实际上更复杂。因此,请不要建议使用while
逐行读取并追加到数组中。
答案 0 :(得分:0)
一种方法是使用
ls -l | {
read total;
lines=(${(f)"$(cat)"})
}
说明:
"$(cat)"
将其余行转换为包含换行符的字符串${(f)...}
将在换行符处分割字符串(...)
创建一个数组