Bash에서 로컬을 사용할 때 서브셸의 종료 코드를 검색하는 방법

Bash에서 로컬을 사용할 때 서브셸의 종료 코드를 검색하는 방법

이 질문은 다른 사람들과 매우 가깝습니다.$(command)로 시작된 서브셸에서 종료 코드를 얻을 수 있습니까?

그러나 이 예에서처럼 local 및 eval을 사용할 때 하위 쉘에서 종료 코드를 가져올 수 있는 솔루션을 찾지 못했습니다.

test() {
> local WHY="$(eval "echo 'test'"; exit 3)"; echo $?
> }
test
0

답변1

간단합니다. 단일 명령을 사용하지 말고 분할하여 사용하세요.

test() {
    local why
    why="$(eval "echo 'test'"; exit 3)"; echo $?
}
test
3

문제는 이것이 local자체 종료 코드가 있는 내장 명령이라는 것입니다... 변수를 할당하는 동안 이를 피하면 하위 쉘에서 종료 코드를 얻게 됩니다.

관련 정보