我的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