지역 변수가 있는 명령의 종료 상태

지역 변수가 있는 명령의 종료 상태

출력이 로컬 변수에 배치되는 함수에 명령이 있습니다. 명령의 종료 상태를 얻고 싶지만 $?항상 0을 반환합니다. 로컬이 아닌 변수를 사용하면 예상되는 종료 상태를 얻습니다.

예는 다음과 같습니다.

function my_fun() {
   local output=$(ls no_file_here_buddy)
   echo $?  # returns 0

   non_local_var=$(ls no_file_here_buddy)
   echo $? # returns 2
}

출력이 로컬 변수에 저장된 명령의 종료 상태를 얻는 방법은 무엇입니까?

답변1

를 사용하면 local명령의 종료 코드 대신 종료 코드가 포함됩니다 $?. local할당에서 변수 선언을 분리하면 됩니다.

local output
output=$(ls no_file_here_buddy)
echo $?

관련 정보