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 }'로컬 어설션이 성공할 때마다(거의 항상 그렇습니다) 0으로 종료되므로 해당 작업을 수행할 수 없습니다.

이를 방지하려면 별도로 선언한 후 다음을 할당하는 것이 좋습니다.

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

이것은 내가 자주 무시하는 쉘체크 규칙이며, 해당 변수 선언의 반환 값에 대해 작업을 시도하지 않는다는 것을 알고 있는 한 안전하게 무시할 수 있습니다.

스크립트 상단(물론 hashbang 아래)에 다음을 추가하여 이를 무시할 수 있습니다.

# shellcheck disable=SC2155

관련 정보