Bash:“屏蔽返回值”是什么意思?

Bash:“屏蔽返回值”是什么意思?

shellcheck生成以下警告

SC2155: Declare and assign separately to avoid masking return
values

对于这行代码

local key_value=$(echo "$current_line" | mawk '/.+=.+/ {print $1 }')

“屏蔽返回值”是什么意思,它与上述警告有何关系?

答案1

当您将变量声明为localor exported 时,它本身就是一个将返回成功或失败的命令。

$ var=$(false)
$ echo $?
1
$ export var=$(false)
$ echo $?
0

因此,如果您想对命令 ( echo "$current_line" | mawk '/.+=.+/ {print $1 }') 的返回值进行操作,您将无法执行此操作,因为只要本地声明成功(几乎总是如此),它就会以 0 退出。

为了避免这种情况,建议单独声明然后分配:

local key_value
key_value=$(echo "$current_line" | mawk '/.+=.+/ {print $1 }')

这是我经常忽略的 shellcheck 规则,并且只要您知道您不尝试对该变量声明的返回值进行操作,就可以安全地忽略它。

您可以通过将以下内容添加到脚本顶部(当然在 hashbang 下方)来忽略它:

# shellcheck disable=SC2155

相关内容