从子脚本到父脚本的退出代码



我有下面的父脚本调用子脚本。

parent.sh

#!/bin/bash
export home=`pwd`
echo "calling child"
. ${home}/bin/child.sh
retn_code=$?
if (retn_code -ne 0)
then
exit $retn_code
else
echo "successful"
fi
exit 0

child.sh:

#!/bin/bash
exit 1

当我执行父脚本时,父脚本中没有捕获1的退出状态。打印的日志的最后一行是"呼叫孩子"。并且log中在此之后没有打印任何行。

是否有什么我错过了,而从孩子到父母的退出状态?

.不调用子进程,而是运行它的代码。因此,如果子脚本调用exit,父脚本退出。你要做的是:

#!/bin/bash
home=$(pwd)
echo "calling child"
if "${home}"/bin/child.sh; then
echo success
else
exit   # status returned by child will propagate
fi
exit 0

注意,这里使用变量home是非常奇怪的。如果您想在child.sh中定义它,在我看来,写if home=$(pwd) ./bin/child.sh; then ...会更清楚。您使用export意味着您希望在child.sh中定义它,但我怀疑您实际上并不想这样做。这与问题无关,所以我只是删除了我认为不必要的导出。

相关内容

  • 没有找到相关文章

最新更新