0
我們有一個帶有返回代碼的腳本。例如bash將管道中的返回值轉換爲bash
#!/bin/bash
exit 42
這是正常工作:
$ ./script ; echo $?
42
,但如果我去:
$ bash << EOF
./script ; echo $?
EOF
0
所以它打印0,而一個希望它仍然打印42
我們有一個帶有返回代碼的腳本。例如bash將管道中的返回值轉換爲bash
#!/bin/bash
exit 42
這是正常工作:
$ ./script ; echo $?
42
,但如果我去:
$ bash << EOF
./script ; echo $?
EOF
0
所以它打印0,而一個希望它仍然打印42
在執行腳本之前,您的$?
正在展開。如果你不希望你的變量在heredoc
(不是管)擴大放單引號括起來的名稱:
bash <<'EOF'
./script; echo $?
EOF
那西港島線防止$?
從在經過串到新bash
命令正在擴大。相反,它將在字符串中進行評估,這是您似乎要做的。
你在這裏沒有任何管道,你使用bash來處理heredoc –