에코$? 1 대신 0을 반환합니다.

에코$? 1 대신 0을 반환합니다.
[root@server ~]# bash << eof
> cat adsfasdf
> echo $?
> eof
cat: adsfasdf: No such file or directory
0

종료 상태 1 대신 0을 반환하는 이유를 설명할 수 있는 사람이 있나요?

답변1

$?변수 확장을 하기 때문이다앞으로코드는 bash실행을 위해 전달되므로 echo종료 코드는 이전에 실행된 명령의 코드입니다 bash.

bash-4.1$ ( exit 42 )

bash-4.1$ bash <<EOF
cat asdfasdf
echo $?
EOF
cat: asdfasdf: No such file or directory
42

작은따옴표만 사용여기 문서변수 확장을 중지하는 구분 기호:

bash-4.1$ bash <<'EOF'
cat asdfasdf
echo $?
EOF
cat: asdfasdf: No such file or directory
1

관련 정보