jus*_*ing 12 bash shell-script shellcheck
shellcheck
产生了以下警告
SC2155: Declare and assign separately to avoid masking return
values
Run Code Online (Sandbox Code Playgroud)
对于这行代码
local key_value=$(echo "$current_line" | mawk '/.+=.+/ {print $1 }')
Run Code Online (Sandbox Code Playgroud)
“屏蔽返回值”是什么意思,它与上述警告有什么关系?
jes*_*e_b 13
当您将变量声明为local
or 或export
ed 时,它本身就是一个将返回成功与否的命令。
$ var=$(false)
$ echo $?
1
$ export var=$(false)
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)
因此,如果您想对命令 ( echo "$current_line" | mawk '/.+=.+/ {print $1 }'
)的返回值进行操作,您将无法这样做,因为只要本地声明成功,它就会以 0 退出(这几乎总是会)。
为了避免这种情况,它建议单独声明然后分配:
local key_value
key_value=$(echo "$current_line" | mawk '/.+=.+/ {print $1 }')
Run Code Online (Sandbox Code Playgroud)
这是一个我经常忽略的 shellcheck 规则,只要您知道自己不尝试对该变量声明的返回值进行操作,IMO 就可以安全地忽略它。
您可以通过将以下内容添加到脚本顶部(当然在 hashbang 下方)来忽略它:
# shellcheck disable=SC2155
Run Code Online (Sandbox Code Playgroud)