共享不同bash脚本中的变量



假设我有一个脚本script1.sh,像

#!/bin/bash
#do something
export THING="a"
source script2.sh & #so running in background
sleep 1 #or do something
export THING="b"
source script2.sh & #so running in background

输出变量THING,由script2.sh读取:

#!/bin/bash                                                                                                                                    
echo "PRINT1: ${THING}"
sleep 5
echo "PRINT2: ${THING}"

假设script2.sh"冻结"是否正确?呼叫时THING的值是多少?(也就是说,即使在后台运行,它也不会在执行过程中改变)。

我对此进行了测试,似乎是这样,但我想检查它是否符合预期的一般行为。

提前感谢,SL

是否可以假设script2.sh正在"冻结"?通话时THING的价值是多少?

是的。该值不是"frozen",可以修改。这只是一个拷贝

每个进程都有自己的环境。子进程是在创建子进程时作为当前环境的副本创建的。