답변:
$?
가장 최근에 실행 된 포 그라운드 파이프 라인의 종료 상태로 확장됩니다. Bash 매뉴얼 의 특수 매개 변수 섹션을 참조하십시오 .
간단히 말해 마지막 명령의 종료 상태입니다.
Cjm의 대답 은 정확하지만 $?
셸 스크립트에서 어리석은 방식으로 사용할 수 있으므로 이에 대해 경고하고 싶습니다. 많은 불량 쉘 스크립트에는 반복되는 코드 패턴이 있습니다.
run_some_command
EXIT_STATUS=$?
if [ "$EXIT_STATUS" -eq "0" ]
then
# Do work when command exists on success
else
# Do work for when command has a failure exit
fi
가능하면 (가독성에 대한 우려가있는 경우가 있음)이 상황을 다르게 코딩해야합니다.
if run_some_command
then
# Do work when command exists on success
else
# Do failure exit work
fi
후자의 사용법은 더 빠르며 온도 변수에 해당하는 양으로 쉘의 변수 네임 스페이스를 오염시키지 않으며 종종 인간에게 훨씬 더 읽기 쉽고 "긍정적 논리"의 사용, 부정없이 조건을 작성하는 연습을 장려합니다. 대부분의 상황에서 단순성. $?
대부분을 사용하여 제거합니다 .
cjm이 말한 것 외에도 의 값 $?
이 0이면 이전 프로세스가 정상적으로 (또는 성공적으로) 종료되었습니다. 그렇지 않으면 약간의 오류가있었습니다.
diff
비교 된 파일이 동일하면 0으로 종료하고, 파일이 다르면 1로 종료하고 2는 오류입니다.
$? 프롬프트에서 마지막 실행 명령의 실행 상태를 제공하십시오. 값 '0'은 명령이 성공적으로 실행되었으며 '1'이 성공하지 못했음을 나타냅니다.
$?
실행 된 명령의 종료 상태를 결정합니다. $
(예를 들어 숫자이어서 $1
, $2
쉘 스크립트의 파라미터 등)을 나타낸다.