문제

나는 쉘 스크립트를 작업 중이며 내가 만날 수있는 다양한 종료 코드를 처리하고 싶습니다. 시도해 보려면이 스크립트를 사용하고 있습니다.

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 1
exit 1;

나는 무언가를 놓치고 있다고 생각하지만 내 자신의 "출구 1"을 가릴 수없는 것 같습니다. 내가 0을 가두려고한다면 모든 것이 효과가있다.

#!/bin/sh
echo "Starting"
trap "echo \"first one\"; echo \"second one\"; " 0
exit

HUP (1) 종료 코드를 포획하는 것에 대해 알아야 할 것이 있습니까?

도움이 되었습니까?

해결책

trap 프로세스가 수신하는 신호에 파견됩니다 (예 : kill), 출구 코드가 아닌 트랩 ... 0 프로세스 종료를 위해 예약되어 있습니다. trap /blah/blah 0 어느 쪽이든 파견됩니다 exit 0 또는 exit 1

다른 팁

그것은 단지 출구 코드 일뿐입니다. 그것은 HUP를 의미하지 않습니다. 그래서 당신의 trap ... 1 HUP를 찾고 있지만 출구는 출구 일뿐입니다.

수행하여 나열 할 수있는 시스템 신호 외에 trap -l, 당신은 특별한 bash sigspecs (err, exit, return and debug)를 사용할 수 있습니다. 모든 경우에도 가독성을 위해 숫자가 아닌 신호 이름을 사용해야합니다.

당신은 또한 ||를 사용할 수 있습니다 || B, B는 A가 실패하면 실행됩니다

#!/bin/sh

failed
{
    echo "Failed $*"
    exit 1
}

dosomething arg1 || failed "some comments"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top