我有两个shell脚本,比如script1.sh和script2.sh。我从script1.sh调用script2.sh。在script2.sh中,完成了一些评估,并根据结果设置了一个标志。现在我需要将标志传递给script1.sh,根据该标志判断script1.sh是继续执行还是退出。我没有使用功能。当我导出标志时,在script1.sh中它是空白的。
我现在的问题是如何从script2.sh返回标志?
任何帮助?有任何想法吗?经验分享?
答案 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
退出语句的返回值。
您无法在此处使用export
。 export
使变量可用于后续子进程。它不能用于将值传递回父进程,因为您正在修改特定于子进程的变量的副本。
答案 2 :(得分:1)
只需使用script2的退出状态:
if script2.sh ; then
echo Exited with zero value
else
echo Exited with non zero
fi
在script2中使用exit 0
或exit 1
来设置标记。