エコ$? 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

おすすめ記事