Bash

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

  • March 14, 2019

shellcheck產生以下警告

SC2155: Declare and assign separately to avoid masking return
values

對於這行程式碼

local key_value=$(echo "$current_line" | mawk '/.+=.+/ {print $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 規則,只要您知道您沒有嘗試對該變數聲明的返回值採取行動,IMO 就可以安全地忽略。

您可以通過將以下內容添加到腳本頂部來忽略它(當然是在 hashbang 下方):

# shellcheck disable=SC2155

引用自:https://unix.stackexchange.com/questions/506352