셸 스 크 립 트: exit 0 과 exit 1 은 어떤 차이 가 있 습 니까?

4646 단어 Shell
정의.
  • exit 0: 프로그램 을 정상적으로 실행 하고 프로그램 을 종료 합 니 다.사용 echo $? 을 0 으로 되 돌려 줍 니 다. 즉, 환경 을 호출 하여 프로그램 이 정상적으로 실행 되 었 다 고 생각 합 니 다.
  • exit 1: 비정상적인 운행 으로 인해 프로그램 이 종료 되 고 다른 숫자 일 수도 있 습 니 다.시스템 프로그램 은 프로그램 실행 오류 에 대해 약 정 된 의 미 를 가지 고 있 으 며 0 이 되 지 않 으 면 프로그램 실행 오류 가 발생 했 음 을 나타 낸다.호출 환경 은 이 반환 값 에 따라 프로그램 이 정상적으로 작 동 하 는 지 판단 합 니 다.
  • return: 반환 값 에 사용 합 니 다.주 함수 에 있 으 면 함 수 를 종료 하고 값 을 되 돌려 줍 니 다.

  • 구별
  • return 은 키워드 입 니 다.exit 는 함수 입 니 다
  • return 은 프로 그래 밍 언어 단계 로 스 택 을 호출 하 는 것 을 나타 낸다.exit 는 시스템 호출 단계 입 니 다. 프로 세 스 의 끝 을 표시 합 니 다
  • return 은 함수 의 종료 (반환) 입 니 다.exit 는 프로 세 스 의 종료
  • return 은 프로 그래 밍 언어 제공 이 고 exit 는 운영 체제 제공 (또는 함수 라 이브 러 리 에서 제공)
  • return 은 함수 의 실행 을 끝내 고 함수 의 실행 정 보 를 다른 호출 함수 에 전달 하여 사용 합 니 다.exit 는 프로그램 을 종료 하고 프로 세 스 가 사용 하 는 메모리 공간 을 삭제 하 며 프로그램의 한 상 태 를 OS 에 되 돌려 줍 니 다. 이 상 태 는 프로그램의 실행 정 보 를 표시 합 니 다. 이 정 보 는 운영 체제 와 관련 이 있 습 니 다. 보통 0 은 정상 적 인 종료 이 고 0 이 아 닌 이상 종료
  • 입 니 다.
  • 비 주 함수 에서 return 과 exit 를 호출 하 는 효과 가 뚜렷 하지만 main 함수 에서 return 과 exit 를 호출 하 는 현상 이 모호 하고 대부분 상황 에서 현상 이 일치 합 니 다
  • 용도.
    스 크 립 트 a. sh 를 사용 하여 스 크 립 트 b. sh 를 호출 하면 a. sh 에서 b. sh 가 정상적으로 돌아 오 는 지 판단 하려 면 b. sh 의 관련 위 치 를 exit 0 또는 exit 1 로 표시 해 야 합 니 다.a. sh 를 실행 한 후 echo $? 를 사용 하여 반환 값 을 판단 합 니 다.
    셸 프로 그래 밍 에서 신중하게 사용 해 야 합 니 다 exit 0.먼저 exit 0return 0 가 아니 라 return 0 함수 에 사용 되 는 것 과 차이 점 은 함수 가 성공 하고 0 으로 돌아 가 는 것 을 나타 낸다.exit 0 는 현재 프로그램 이 성공 적 으로 실행 되 었 음 을 나타 내 고 현재 실행 스 크 립 트 나 프로그램 을 직접 종료 합 니 다.반면 return -1 함수 실행 실패 로 오 류 를 되 돌려 줍 니 다.exit 1 (또는 1 이상) 프로그램 이 실 패 했 고 프로그램 을 종료 한 것 을 나타 낸다.exit 프로 세 스 가 끝 났 을 때의 상 태 를 되 돌려 주 는 데 사 용 됩 니 다. 일반적으로 부모 셸 에서 변수 $? 를 사용 하여 하위 셸 의 종료 상 태 를 가 져 와 하위 셸 의 실행 여 부 를 판단 합 니 다.
    비록 두 가지 차이 가 매우 뚜렷 하고 이해 하기 쉽 지만, 왜 전문 적 으로 기록 을 해 야 합 니까?이러한 오류 가 발생 했 습 니 다. 하위 셸 에서 exit 0 과 exit 1 을 사용 하 는 함수 인 터 페 이 스 를 실행 해 야 합 니 다. 부모 셸 은 프로 세 스 반환 값 {$?} 을 판단 하 는 작업 을 했 습 니 다. 그 결과 누군가가 환경 스 크 립 트 에 이 함수 인 터 페 이 스 를 직접 추가 하여 판단 하 였 으 나 결 과 는 환경 배치 에 실 패 했 습 니 다.
    주: 인터페이스 함수 에서 return 을 사용 하고 실행 (하위 셸) 프로그램 을 종료 할 때 exit 를 사용 합 니 다.
    #/bin/bash
    
    function check_extern_input() {
    	read param
    	if [ "${param}" == "exit 0" ];then
    		echo "successful exit process right now!"
    		exit 0
    	elif [ "${param}" == "exit 1" ];then
    		echo "failed exit process right now!"
    		exit 1
    	elif [ "${param}" == "return 0" ];then
    		echo "func normal return, process not exit, Enter go on..."
    		return 0
    	else
    		echo "Input again:"
    	fi		
    }
    
    while true ; do
    	check_extern_input
    done
    

    좋은 웹페이지 즐겨찾기