我有点不高兴地发现以下行为:
bash$ false
bash$ true | echo $?
0
bash$ ksh
ksh$ false
ksh$ true | echo $?
0
ksh$ zsh
zsh$ false
zsh$ true | echo $?
1
直观地看,zsh正确,而bash和ksh错误。$?
是“最近执行的管道的退出状态”,在每种情况下都应为1。请注意,false | echo $?
在ksh
和中也都输出0 bash
。是标准的灵活的在这一点上(即行为是不确定的),或者是bash
和ksh
不符合要求的吗?我也很好奇知道bash和ksh在做什么以解决这个问题。
$ bash --version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.
$ zsh --version
zsh 4.3.11 (i386-apple-darwin11.0)
$ ksh --version
version sh (AT&T Research) 1993-12-28 s+
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句