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
나는 이것이 조건화된 체조로 시뮬레이션될 수 있다고 믿지 않습니다.