【问题标题】:export doesn't work in a background process导出在后台进程中不起作用
【发布时间】:2012-09-01 16:29:36
【问题描述】:

pipe.sh

 export START=100
 . ./other.sh &
 wait

other.sh

sleep 5
export END=200

但我在export -p 中看不到变量END。如果我在前台获取 other.sh ,它可以工作。

 export START=100
 . ./other.sh 

如何从后台进程中导出变量?有什么解决办法吗?

【问题讨论】:

  • 您希望后台采购如何工作?我可以想象两种情况,这两种情况都没有用(父进程在生成时立即从后台进程中分离;或者,父进程在前台命令之间随机执行后台命令)。您想要完成什么,后台处理如何进一步实现这一目标?
  • 我试图找出完成后台进程需要多少时间。我有 10 多个不同的进程同时启动并在后台运行。所以我认为这种方式可以很好地为流程计时。我对任何其他方式持开放态度。谢谢。
  • 为后台进程计时很容易。为什么你需要它把一些东西导出回父级?
  • 你能建议我一种更好的计时方法吗?我尝试在线搜索

标签: bash shell


【解决方案1】:

子进程不能改变父环境,你需要以某种方式从父进程声明变量。例如使用文件:

pipe.sh:

export START=100
. ./other.sh > tmp &
wait
source tmp
rm tmp 
echo $END

其他.sh:

sleep 5
echo "export END=200"

Also see this answer.

【讨论】:

  • 我明白了。子进程。丁打我。谢谢。
猜你喜欢
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多