출력이 로컬 변수에 배치되는 함수에 명령이 있습니다. 명령의 종료 상태를 얻고 싶지만 $?
항상 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 $?