foo() {
local lines=$(ls -l)
local IFS=$'\n'
for line in $lines; do
echo $line
done
}
在zsh中,循环仅执行一次,因为
ls -l
命令的输出没有按新行分割,整个文本块传递到了$line。然而,在bash中这个命令可以正常工作。如何在两个shell中实现完全相同的行为?我不是在寻找“ls”输出的替代循环解决方案。只是试图理解为什么它在zsh中不能工作但在bash中完美地工作。可以使用除“ls”命令之外的任何其他命令,例如“ps -a”。行为是相同的。输出没有按行分割。
谢谢!
ls
? - Cyrus