errexit(-e)로 실행할 때 0이 아닌 반환 코드를 어떻게 예상합니까? 그렇지 않으면 실패합니까?

errexit(-e)로 실행할 때 0이 아닌 반환 코드를 어떻게 예상합니까? 그렇지 않으면 실패합니까?

errexit 옵션이 활성화되면 명령이 실패하면 스크립트가 종료됩니다. 실패할 것으로 예상되는 특정 명령에 대해 이 동작을 되돌리고 싶습니다. 즉, 계속하고 싶습니다.~하지 않는 한표시된 명령이 실패했습니다.

나는 현재 이와 같은 일을 하고 있는데 추악합니다.

some_test() { 
    # retuns nonzero if some condition is met, and zero otherwise
}

some_change() {
    # makes a change that should alter the return code of the above test
}

set -e

some_test
echo "expected success, found it"

some_change

set +e
some_test           # expect failure

if [[ $? -eq 0 ]]
then
   echo "expected failure, found success"
   exit(1)
else
   echo "expected failure, found it"
fi

set -e

# ...more testing below

좀 더 간결한 것을 찾고 있습니다. 나도 할 수 있다는 걸 알아참다다음과 같은 명령이 실패했습니다.

some_test
some_change
some_test && true

하지만 나는 실패를 용납하고 싶지 않고, 실패를 주장하고 싶다. 두 번째 테스트를 통과하면 스크립트가 실패하기를 원합니다.

답변1

if my_command; then false; else true; fi

나는 이것이 조건화된 체조로 시뮬레이션될 수 있다고 믿지 않습니다.

관련 정보