셸 스 크 립 트: exit 0 과 exit 1 은 어떤 차이 가 있 습 니까?
4646 단어 Shell
echo $?
을 0 으로 되 돌려 줍 니 다. 즉, 환경 을 호출 하여 프로그램 이 정상적으로 실행 되 었 다 고 생각 합 니 다.구별
스 크 립 트 a. sh 를 사용 하여 스 크 립 트 b. sh 를 호출 하면 a. sh 에서 b. sh 가 정상적으로 돌아 오 는 지 판단 하려 면 b. sh 의 관련 위 치 를
exit 0
또는 exit 1
로 표시 해 야 합 니 다.a. sh 를 실행 한 후 echo $?
를 사용 하여 반환 값 을 판단 합 니 다.셸 프로 그래 밍 에서 신중하게 사용 해 야 합 니 다
exit 0
.먼저 exit 0
가 return 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.