`command return` 이후 종료 상태가 0이 아닌 상태인지 확인 ||

`command return` 이후 종료 상태가 0이 아닌 상태인지 확인 ||

다음 코드 패치를 찾았습니다.

function some_fun() {    
#[...]
    [ -d ${MKAPP_BUILDDIR}/tmp ] || mkdir ${MKAPP_BUILDDIR}/tmp || return 1

    if [ $? -ne 0 ]; then   # never true?
            mount -t tmpfs none ${MKAPP_BUILDDIR}/tmp || return 1
    fi
}

내가 이해한 바에 따르면 tmp빌드 디렉터리에 디렉터리가 있는지 확인하고 그렇지 않은 경우 디렉터리를 생성하려고 시도합니다. 역시 실패하면 함수는 상태 코드 1로 종료됩니다.

그렇다면 아래 if 문에서 실패한 종료 코드를 확인하는 것은 무의미하지 않을까요? 그 전에는 실패한 명령이 있을 수 없습니다. 함수가 반환되고 if 문이 처리되지 않게 되기 때문입니다.

내가 올바르게 생각하고 있는 걸까요, 아니면 구문이 나를 속이고 있는 걸까요?

그런데 저는 bash를 사용하고 있습니다.

답변1

그래 네가 맞아. 프로 return시저는 종료 상태 1로 스크립트의 원래 호출자에게 함수를 종료합니다.

따라서 mount명령이 처리되지 않습니다.

이 문제를 해결하려면 if .. thenmount 명령에서 다음 문을 제거하면 됩니다.

[ -d ${MKAPP_BUILDDIR}/tmp ] || mkdir ${MKAPP_BUILDDIR}/tmp || return 1

mount -t tmpfs none ${MKAPP_BUILDDIR}/tmp || return 1

따라서 디렉터리를 생성할 수 없는 경우 상태 1로 종료합니다.
성공적으로 생성되면 mount명령을 실행합니다.

관련 정보