$은 무슨 뜻인가요? 쉘 스크립트에서?

$은 무슨 뜻인가요? 쉘 스크립트에서?

쉘 스크립트를 보다가 "$?"라는 용어를 보았습니다. 이 말은 무엇을 의미 하는가?

답변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"은 명령 실행이 실패했음을 나타냅니다.

관련 정보