2


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

4

3 回答 3

3

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

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

和:

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

希望这会有所帮助=)

于 2012-10-17T14:08:50.440 回答
2

只需使用 script2 的退出状态:

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

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

于 2012-10-17T14:10:05.833 回答
1

我希望您使用script2.sh(se by the statement exit {value})的返回码

例如

./script2.sh

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

你不能export在这里使用。export使变量可用于后续子流程。它不能用于将值传递回父进程,因为您正在修改特定于子进程的变量的副本。

于 2012-10-17T14:08:06.557 回答