Mock
종료 코드 처리를 테스트할 때 use 와 같이 스크립트의 임의의 종료 코드를 트리거하는 것이 유용한 경우가 많습니다 . 종료 코드 0과 1 에는 내장 함수가 있지만 다른 종료 코드에는 투박한 옵션만 있는 것 같습니다 side_effect = Exception()
. :true
false
서브쉘 사용:
(exit "$exit_code")
비용이 많이 들고 복잡하며 의도하지 않은 부작용이 있을 수 있습니다. 새 셸을 시작하면 수천 줄의 코드가 호출될 수 있지만 종료 코드 설정 전용 명령은 몇 줄에 불과할 수 있습니다. 서브셸은 프로덕션 코드에서 보기 드문 구성이므로 초보자도 이 코드가exit "$exit_code"
.사용자 정의 함수를 만들고 호출합니다.
simulate_exit_code() { return "$1" } simulate_exit_code "$exit_code"
저렴하지만 복잡성이 더 높습니다.
있는지 물었더니더 나은 것위 옵션 중 어느 것이 가장 좋은지는 아닙니다(첫 번째는 간결함을 위한 것이고 두 번째는 속도를 위한 것입니다). 이와 같은 매우 간단한 내장 명령이 set_exit_code "$exit_code"
이상적입니다.
답변1
복잡한 옵션은 다음과 같습니다.
. /dev/stdin <<< 'return "$exit_code"'
(포크하지 않지만 5.1+에서는 임시 파일이나 파이프를 생성합니다)
완전성을 위해,
ksh93에서는 (exit "$ret")
하위 쉘이 분기되지 않으므로 상대적으로 효율적입니다.
bash
set_status() return "$1"
간단히 작성할 수 없는 Bourne과 같은 쉘 중 하나입니다 .
에서는 zsh
익명 함수를 사용할 수 있습니다.
() return 3
이와 같은 필요가 있을 때 개인적으로 다음을 사용합니다.
set_status() { return "$1"; }
나에게는 이것이 가장 쉬운 것 같다.
하지만 결국 답은 이렇습니다종료 코드를 설정하는 간단한 Bash 명령이 있습니까?예아니요AFAIK.
답변2
나는 사용자 정의 기능이 최선의 선택이라고 생각합니다(질문의 옵션 2).