2017-02-13 3 views
0

戻りコード付きのスクリプトがあります。例えば、あるbashへのパイプでのbash戻り値

#!/bin/bash 
exit 42 

が正常に動作します:

$ ./script ; echo $? 
42 

しかし、私が行く場合:

$ bash << EOF 
./script ; echo $? 
EOF 
0 

1が、それはまだ42

+1

ここにパイプはありません。あなたはheredocを処理するためにbashを使用しています。 –

答えて

6
を印刷するように期待しながら、それは、0を出力します

$?がスクリプトを実行する前に展開されています。あなたの変数がheredoc(ないパイプ)に拡大したくない場合は名前の周りに単一引用符を置く:新しいbashコマンドに文字列を通過する間から$?を防ぐウィル

bash <<'EOF' 
./script; echo $? 
EOF 

が展開されています。代わりに、あなたが行っているように見える文字列で評価されます。

関連する問題