bash 스크립트 끝에있는 종료 코드

bash 스크립트 끝에있는 종료 코드의 의미가 혼란 스럽습니다. 종료 코드를 알고 있습니다. 0은 성공적으로 끝났음을 의미하며 더 많은 종료 코드 번호가 있음을 의미합니다 (오해하지 않은 경우 127).

내 질문은 스크립트 끝에서 종료 코드 0을 볼 때입니다. 스크립트가 실패했거나 다른 의미가 있더라도 종료 코드를 0으로 강제 실행합니까?

설명

  • 스크립트가

    , 스크립트 내에서 발생하는 상황에 관계없이 종료 코드 0으로 종료됩니다.

  • @Hatclock 왜 ' 답변을 전액 서약 된 답변으로 게시 하시겠습니까? 댓글로 표시 할 수 없으며 답변에 대한 가짜 인터넷 포인트를 얻지 않는다고 생각하지 않습니다. ' .. (빠른 답장을위한 쿠도스)
  • ' 내 휴대 전화의 기차역에 있습니다. 전화에 너무 많이 입력하는 것을 좋아하지 않습니다. 일까 츄가 좋은 답을 가지고있는 것 같네요!
  • @Hatclock 아뇨, 전혀 요. 스크립트가 exit 0로 끝나면 마지막 명령어가 실행 된 경우에만 코드 0으로 종료됩니다. 스크립트 끝에서 exit 0의 유일한 영향은 이전 지침의 상태 대신 0을 반환하는 것입니다.
  • @Gilles 그건 좀 더 모호했습니다. 내 부분에 대한 답장. 스크립트가 언제든지 exit 0를 실행하면 이전에 발생한 상황에 관계없이 종료 코드 0을 반환합니다.

답변

내장 명령 exit는 셸을 종료합니다 ( Bash “s 참조 ) :

exit [n]
n 상태를 반환하여 셸을 종료합니다. n을 생략하면 종료 상태는 마지막으로 실행 된 명령의 상태입니다. EXIT의 모든 트랩은 쉘이 종료되기 전에 실행됩니다.

파일 끝까지 실행도 종료되고 마지막 명령의 반환 코드를 반환하므로 마지막 exit 0는 종료 상태에 관계없이 스크립트를 성공 상태로 종료합니다. (즉, 스크립트가 마지막 exit에 도달했다고 가정합니다.) 스크립트 끝에서 true를 사용할 수도 있습니다. 또는 종료 코드 0을 가져옵니다.

물론 더 자주 iv id =”내부에서 exit를 사용합니다. b24dfb915f “>

는 중간에 스크립트를 종료합니다.

1을 인쇄해야합니다 ($?에는 이전 명령에서 반환 된 종료 코드가 포함됨). :

sh -c "false" ; echo $? sh -c "false; exit" ; echo $? 

0이 인쇄되지만 :

sh -c "false; exit 0" ; echo $? 

아니요 exit를 실행할 때 스크립트 “실패”개념이 의미가 있는지 확인하십시오. 스크립트에 의해 실행 된 일부 명령은 실패 할 수 있지만 스크립트 자체는 성공할 수 있기 때문입니다. . 성공과 실패를 결정하는 것은 스크립트 작성자의 몫입니다.

또한 종료 코드의 표준 범위는 0..255입니다. 127 이상의 코드는 셸에서 신호에 의해 종료 된 프로세스를 나타내는 데 사용되지만 일반적인 방법으로 반환 될 수 있습니다. wait 시스템 호출은 실제로 더 넓은 값을 반환하며 나머지는 운영 체제에서 설정 한 상태 비트를 포함합니다.

설명

  • 좋습니다. ' 8 비트 종료 코드 번호 매기기에 대해 몰랐습니다. 감사합니다!
  • 프로세스가 종료되면 종료 코드 > 127과 함께 종료되지 않습니다. It ' 일부 셸은이 경우 $?를 128 + signum으로 설정합니다. 자세한 내용은 프로세스 종료시 기본 종료 코드 를 참조하세요.
  • exit 0는 0, 종료가 실행 된 경우. (다른 경로로 종료 될 수 있습니다.)

답변

0은 성공을 의미하고 양의 정수는 실패를 의미합니다. 255 개의 서로 다른 오류 코드가 있지만 126 이상의 값은 프로그램을 시작할 수 없거나 (126 또는 127) 신호에 의해 종료되었음을 표시하기 위해 예약되어 있습니다 (129 이상). 프로세스 종료시 기본 종료 코드? Bash 함수 / 스크립트에서 사용할 수있는 반환 / 종료 값은 무엇인가요? 자세한 내용을 확인하세요.

셸 스크립트의 종료 상태는 스크립트가 실행 한 마지막 명령의 종료 상태입니다. 예를 들어

#!/bin/sh somecommand 

somecommand의 종료 상태 인 반면

#!/bin/sh somecommand exit 0 

somecommand가 반환되었습니다.이 두 번째 스크립트도 작성할 수 있습니다.

#!/bin/sh somecommand true 

스크립트 끝에 exit 0를 입력해도 반드시 0을 반환합니다. 이렇게하면 스크립트 끝에 도달했을 때만 0을 반환합니다. 예를 들어 다음 스크립트는 항상 3을 반환합니다.

#!/bin/sh exit 3 exit 0 

The 다음 스크립트는 구문 오류에 대한 메시지를 표시하는 것 외에도 항상 오류 코드를 반환합니다.

#!/bin/sh } exit 0 

다음 스크립트는 해당 항목에 따라 1 또는 0을 반환합니다. 첫 번째 인수 :

#!/bin/sh if [ "$1" = "foo" ]; then exit 1 fi exit 0 

다음 스크립트는 iv id = “6c673f16d7″이후 somecommand의 상태를 반환합니다. >

somecommand가 실패 할 경우 스크립트를 종료합니다.

#!/bin/sh set -e somecommand exit 0 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다