首页 > 解决方案 > 为什么从 bash while 循环(在管道中)返回不会破坏封闭的函数?

问题描述

考虑以下脚本:

f1() {
  echo | while true; do
    return 0
  done

  echo "why bash execute this line"          # zsh don't execute this line
}

f1

我希望不会打印“为什么 bash 执行这一行”这一行,但 bash 会打印这一行。这很奇怪。我在zsh中测试它,zsh不打印那行。

标签: bash

解决方案


这只return从运行的子shell返回while- 您正在while通过 pipe运行|

删除echo |它,它将按您预期的方式运行。

PS:man bash或者help return是你的朋友。


推荐阅读