【发布时间】:2021-05-07 13:19:17
【问题描述】:
function foo()
{
ls / | while read LINE;
do
echo "step1"
return
done
echo "step2"
}
foo
我希望 shell 脚本能够输出:
step1
然而,真正的输出是:
step1
step2
为什么 return 语句在 shell 函数中的行为不符合预期?
【问题讨论】:
-
出于同样的原因
( echo x; exit; ) ; echo y将输出 x 和 y。|为右操作数和左操作数创建一个子shell。return适用于该子外壳,而不是您的功能。用y() { ( echo x; return; ) ; echo y; }; y检查它