쉘 스크립트를 보다가 "$?"라는 용어를 보았습니다. 이 말은 무엇을 의미 하는가?
답변1
$?
가장 최근에 실행된 전경 파이프의 종료 상태로 확장됩니다. 보다Bash 매뉴얼의 특수 매개변수 섹션.
쉽게 말하면 마지막 명령의 종료 상태이다.
답변2
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
후자의 사용법은 더 빠르며 임시 변수에 해당하는 쉘의 변수 네임스페이스를 오염시키지 않으며 일반적으로 사람이 더 읽기 쉽고 "긍정적 논리"의 사용을 권장합니다. 즉, 대부분의 경우 인지 가능한 부정 문 없이 조건문을 작성하는 것입니다. 간단합니다. 사용 이 $?
크게 줄어듭니다.
답변3
$?
- 마지막으로 실행된 명령의 종료 상태입니다.
$0
- 현재 스크립트의 파일 이름입니다.
$#
- 스크립트에 제공되는 매개변수의 수입니다.
$$
- 현재 쉘의 프로세스 번호입니다. 쉘 스크립트의 경우 이를 실행하는 프로세스 ID입니다.
답변4
$? 메시지가 표시되면 마지막으로 실행된 명령의 실행 상태를 제공합니다. 값이 "0"이면 명령 실행이 성공했음을 나타내고 "1"은 명령 실행이 실패했음을 나타냅니다.