我无法理解bash中内置的返回行为.这是一个示例脚本.
#!/bin/bash dostuff() { date | while true; do echo returning 0 return 0 echo really-notreached done echo notreached return 3 } dostuff echo returncode: $?
该脚本的输出是:
returning 0 notreached returncode: 3
returning 0 returncode: 0
看起来像上面使用的return语句是以我认为break语句行为的方式,但只有当循环位于管道的右侧时才行.为什么会这样?我在bash手册页或在线上找不到任何解释这个行为的东西.脚本在bash 4.1.5和破折号0.5.5中的方式相同.