为了账号安全,请及时绑定邮箱和手机立即绑定

为什么“本地”清除命令的返回代码?

为什么“本地”清除命令的返回代码?

守着一只汪 2019-09-24 16:31:16
这个Bash片段符合我的预期:$ fun1() { x=$(false); echo "exit code: $?"; }$ fun1exit code: 1但是,使用local,这不会:$ fun2() { local x=$(false); echo "exit code: $?"; }$ fun2exit code: 0谁能解释为什么local清除命令的返回代码?
查看完整描述

2 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

代码local返回0 的原因是$?“扩展到最近执行的前台管道的退出状态”。从而$?回报成功local


您可以通过如下方式将声明x与初始化分开来解决此问题x:


$ fun() { local x; x=$(false); echo "exit code: $?"; }; fun

exit code: 1


查看完整回答
反对 回复 2019-09-24
?
大话西游666

TA贡献1817条经验 获得超14个赞

local命令的返回码遮盖了的返回码false


查看完整回答
反对 回复 2019-09-24
  • 2 回答
  • 0 关注
  • 446 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信