Bash:「マスクされた戻り値」とはどういう意味ですか?

Bash:「マスクされた戻り値」とはどういう意味ですか?

shellcheck次の警告を生成します

SC2155: Declare and assign separately to avoid masking return
values

このコード行の場合

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

「マスクされた戻り値」とは何を意味し、上記の警告とどのような関係がありますか?

答え1

local変数を ed と宣言すると、exportそれ自体が成功または失敗を返すコマンドです。

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

したがって、command()の戻り値に対して操作を実行したい場合は、echo "$current_line" | mawk '/.+=.+/ {print $1 }'ローカルアサーションが成功するたびに(ほぼ常にそうです)ゼロで終了するため、その操作は実行できません。

これを防ぐには、別々に宣言してから次のものを割り当てることをお勧めします。

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

これは私が頻繁に無視するシェルチェックルールであり、その変数宣言の戻り値に対して操作を試みないことを知っている限り、安全に無視できます。

スクリプトの上部(もちろんhashbangの下)に以下を追加することでこれを上書きできます。

# shellcheck disable=SC2155

関連情報