linux - 环境变量不更新

标签 linux bash shell

我有两个 shell 脚本。其中一个我有:

export FOO="yes"
sh another.sh &

# ops ...

export FOO=0

another.sh 我有:

while [[ $FOO -eq "yes" ]]
do
# something ...
done

问题是,当第一个脚本完成时,设置 FOO=0another.shFOO 的值继续为 "is"。我想知道如何获取更新的 FOO 以便我可以确定第一个脚本(调用者)何时完成。

最佳答案

子进程接收其父环境的副本,而不是对原始环境的引用。如果在子进程仍在运行时父进程发生变化,则子进程的内存空间中仍具有原始值。

作为解决方法,您可以让父级在退出前在已知位置创建一个空文件,然后让子级查找要创建的文件。它不是很健壮,但它是一种简单的进程间通信形式,可能就足够了。

关于linux - 环境变量不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251960/

相关文章:

java - 仅包含实时 lucene 索引的目录中的可用磁盘减少

linux - 在远程服务器上执行 Shell 脚本::给出 sqlplus: command not found

python - 从 zsh 安装 scrapy 时出错

linux - 如何检测带有单引号或双引号的参数?

bash - 结合wget和grep下载

linux - 如何确定 systemd EnvironmentFile 将设置的精确环境变量集?

c++ - zlib 压缩/解压缩 C++ Linux

linux - 如何将路径名中的 ".."转换为 bash 脚本中的绝对名称?

bash - 带正负过滤的多行 grep

bash - 如何等待脚本生成的所有子(和孙子等)进程