한 가지 일반적인 방법은 다음과 같습니다.
die() {
IFS=' ' # make sure "$*" is joined with spaces
# output the arguments if any on stderr:
[ "$#" -eq 0 ] || printf '%s\n' "$*" 1>&2
exit 1
}
다음과 같이 사용하십시오.
mkdir -p some/path || die "mkdir failed with status $?"
또는 종료 상태를 포함 시키려면 다음과 같이 변경할 수 있습니다.
die() {
last_exit_status=$?
IFS=' '
printf '%s\n' "FATAL ERROR: $* (status $last_exit_status)" 1>&2
exit 1
}
그리고 그것을 사용하는 것이 조금 더 쉽습니다.
mkdir -p some/path || die "mkdir failed"
실패하면 mkdir
이미 오류 메시지를 발행했을 가능성이 높으므로 두 번째 메시지는 중복으로 표시 될 수 있습니다.
mkdir -p some/path || exit # with the same (failing) exit status as mkdir's
mkdir -p some/path || exit 1 # with exit status 1 always
(또는 die
인수없이 위 의 첫 번째 변형을 사용하십시오 )
command1 || command2
이전에 보지 못한 command1
경우 실행 되고 command1
실패하면 실행됩니다 command2
.
따라서 "디렉토리 또는 다이 만들기"처럼 읽을 수 있습니다.
귀하의 예는 다음과 같습니다.
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
some_command || die "some_command failed"
또는 dies
메인 코드가 더 명확하도록 오른쪽 에서 더 정렬 할 수 있습니다 .
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
some_command || die "some_command failed"
또는 명령 행이 긴 경우 다음 행에서 :
mkdir -p some/path ||
die "mkdir failed"
cd some/path ||
die "cd failed"
some_command ||
die "some_command failed"
또한 이름을 some/path
여러 번 사용하려는 경우 이름 을 계속 입력하지 않아도되므로 변수에 저장하여 필요할 때 쉽게 변경할 수 있습니다. 그리고 변수 인수를 명령에 전달할 때는 --
옵션 구분 기호 를 사용 하여 인수로 시작하는 인수가 옵션 으로 사용 되지 않도록하십시오 -
.
dir=some/path
mkdir -p -- "$dir" || die "Cannot make $dir"
cd -P -- "$dir" || die "Cannot cd to $dir"
some_command || die "Cannot run some_command"