将值从子shell脚本返回到父脚本

时间:2012-10-17 14:06:47

标签: bash shell scripting


    我有两个shell脚本,比如script1.sh和script2.sh。我从script1.sh调用script2.sh。在script2.sh中,完成了一些评估,并根据结果设置了一个标志。现在我需要将标志传递给script1.sh,根据该标志判断script1.sh是继续执行还是退出。我没有使用功能。当我导出标志时,在script1.sh中它是空白的。
我现在的问题是如何从script2.sh返回标志?
任何帮助?有任何想法吗?经验分享?

3 个答案:

答案 0 :(得分:3)

您可以打印结果并在script1中捕获它:

# Script 1
flag="$(./script2.bash)"

# Script 2
[...]
printf '%s\n' "$flag"

希望这有助于=)

答案 1 :(得分:1)

我希望您使用script2.sh的返回码(由exit {value}声明

e.g。

./script2.sh

$?包含script2.sh退出语句的返回值。

您无法在此处使用exportexport使变量可用于后续子进程。它不能用于将值传递回父进程,因为您正在修改特定于子进程的变量的副本。

答案 2 :(得分:1)

只需使用script2的退出状态:

if script2.sh ; then
   echo Exited with zero value
else
   echo Exited with non zero
fi

在script2中使用exit 0exit 1来设置标记。