"$?"를 사용할 때 "ls" 명령을 찾을 수 없는 이유는 무엇입니까?

"$?"를 사용할 때 "ls" 명령을 찾을 수 없는 이유는 무엇입니까?

할당 문제:

터미널에서 "good", "ls"를 실행하여 실행상태를 확인합니다.

내가 뭘 한거지

good;$?

산출:

zsh: command not found: good
zsh: command not found: 127

ls;$?

산출:

quiz.sh
zsh: command not found: 0

이 명령이 존재하는 경우 "ls" 명령을 찾을 수 없는 이유는 무엇입니까?

답변1

"명령을 찾을 수 없습니다"라는 메시지가 표시되지 않습니다 ls. 거기에서 출력을 볼 수 있습니다 ls. command not found, 0이것이 확장 되는 $?것입니다.

$?이전 명령의 상태입니다. 실행 후에는 ls오류가 없으므로 상태는 0입니다. 를 실행한 후 good상태는 127이며, 이는 명령을 찾을 수 없을 때 셸에서 사용하는 상태입니다.

상태를 표시하려면, 표시만 하면 된다고 쉘에 알려주어야 합니다. 이것이 바로 이 echo명령의 목적입니다.

good; echo $?
ls; echo $?

답변2

$?이전 명령의 반환 코드입니다. 네가 원한다면바라보다그것, 당신은 필요합니다 echo $?. 이는 일반적으로 if명령문에 사용됩니다( 0불행히도 여기서 = true).

관련 정보