我有两个 shell 脚本。其中一个我有:
export FOO="yes"
sh another.sh &
# ops ...
export FOO=0
在 another.sh
我有:
while [[ $FOO -eq "yes" ]]
do
# something ...
done
问题是,当第一个脚本完成时,设置 FOO=0
,another.sh
中 FOO
的值继续为 "is"
。我想知道如何获取更新的 FOO
以便我可以确定第一个脚本(调用者)何时完成。
最佳答案
子进程接收其父环境的副本,而不是对原始环境的引用。如果在子进程仍在运行时父进程发生变化,则子进程的内存空间中仍具有原始值。
作为解决方法,您可以让父级在退出前在已知位置创建一个空文件,然后让子级查找要创建的文件。它不是很健壮,但它是一种简单的进程间通信形式,可能就足够了。
关于linux - 环境变量不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251960/