0
戻りコード付きのスクリプトがあります。例えば、あるbashへのパイプでのbash戻り値
#!/bin/bash
exit 42
が正常に動作します:
$ ./script ; echo $?
42
しかし、私が行く場合:
$ bash << EOF
./script ; echo $?
EOF
0
1が、それはまだ42
戻りコード付きのスクリプトがあります。例えば、あるbashへのパイプでのbash戻り値
#!/bin/bash
exit 42
が正常に動作します:
$ ./script ; echo $?
42
しかし、私が行く場合:
$ bash << EOF
./script ; echo $?
EOF
0
1が、それはまだ42
$?
がスクリプトを実行する前に展開されています。あなたの変数がheredoc
(ないパイプ)に拡大したくない場合は名前の周りに単一引用符を置く:新しいbash
コマンドに文字列を通過する間から$?
を防ぐウィル
bash <<'EOF'
./script; echo $?
EOF
が展開されています。代わりに、あなたが行っているように見える文字列で評価されます。
ここにパイプはありません。あなたはheredocを処理するためにbashを使用しています。 –