
[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