我的bash腳本(init.sh
)調用另一個腳本(script.sh
),我想在init.sh
做任何進一步的行動之前,從script.sh
測試誤碼測試錯誤代碼。
我想和$?
測試它,但它不工作在bash腳本,從一個叫腳本
我init.sh
是這樣的:
#!/bin/bash
set -e
echo "Before call"
docker run -v $PWD:/t -w /t [command]
if [ $? == 1 ]; then
echo "Issue"
fi
echo "After call"
我只能從stdout
,而不是After call
得到了Before call
。
我知道一個事實,如果我錯了與執行參數單獨docker run -v $PWD:/t -w /t [command]
,然後echo $?
將正確地顯示1
我在想,我不從scrip.sh
趕上退出代碼,而是從別的地方。
任何想法?
這很混亂......你提到'script.sh',但不要在你的'init.sh'中調用它。無論如何,你可以嘗試運行'bash -x init.sh'並看看它實際上在做什麼。 – gilez
使用'set -e',如果對'docker' *的調用將'$?'設置爲1,您的腳本將在'if'語句執行之前退出,更不用說最後的'echo'調用。 – chepner