이 질문은 다른 사람들과 매우 가깝습니다.$(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
자체 종료 코드가 있는 내장 명령이라는 것입니다... 변수를 할당하는 동안 이를 피하면 하위 쉘에서 종료 코드를 얻게 됩니다.