如何使用Shell函数返回的数值参与算术赋值运算?
Shell 函数返回值赋值问题解答
你期望的(( COUNT+=gimme_five ))写法不可行,必须采用拆分语句或者其他间接获取状态码的方式实现需求。
具体原因如下:
- Shell 环境下函数的
return语句仅用于设置函数的退出状态码,和C、Python等语言中返回值给调用表达式的逻辑完全不同。 - 算术表达式
((...))会把内部的gimme_five识别为普通变量名,如果没有提前声明过同名变量,该位置会默认取0参与计算,全程不会触发gimme_five函数执行,自然也拿不到你想要的数值5。
你给出的拆分写法是最标准、可读性最高的实现方案:
gimme_five (( COUNT+=$? ))
如果确实需要写在同一行,也可以用命令替换实现,但可读性更低,不推荐日常使用:
(( COUNT += $(gimme_five; echo $?) ))
内容的提问来源于stack exchange,提问作者Toby
相关产品推荐
相关产品推荐

