bash - 为什么从 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不打印那行。
解决方案
这只return
从运行的子shell返回while
- 您正在while
通过 pipe运行|
。
删除echo |
它,它将按您预期的方式运行。
PS:man bash
或者help return
是你的朋友。
推荐阅读
- python-3.x - 如何访问file2中的file1
- json - Kotlin:使用 Jackson 将集合映射到 json 数组
- javascript - Kendo Grid Popup Template 将数据绑定到第二个 Popup
- azure - 执行后将管道活动记录到数据库
- powershell - 在 PowerShell ISE 窗口中运行 PowerShell 6 时被挂起并且没有输入
- django - Django 测试通过 for 循环解析
- javascript - 如何访问父组件vueJs中的子组件数据?
- php - 如何从下拉列表的选定选项中更新值?
- reactjs - 如何在 chrome dev 远程设备上运行 React.js localhost 应用程序?
- sql - ascii值到ascii字符串的sql转换