脚本-函数脚本可见性中的分叉(背景)变量



如何在块(bash(中导出脚本中的分叉变量

如果您使块组中的一个变量分叉,如何取回该变量?

unset VAR; { VAR=$( echo "AAAA" ) ;} & PID=$!; echo "[$PID - $VAR]";

只返回PID

[31270 - ]

如何在没有外部文件的情况下

简短的回答:你不能——这是不可能的。

一旦子shell{ VAR=$( echo "AAAA" ) ;}&分叉,它就是一个单独的进程,即子进程。它继承了原始shell中所有变量的副本,但对这些变量的任何或更改,或它创建的新变量,都保留在子shell中,原始(父(shell看不到。更重要的是,由于您没有等待孩子完成,因此无法保证孩子甚至会在家长想要使用变量时设置变量。

将数据从子级返回到父级的唯一方法是让进程进行通信,这被称为进程间通信(IPC(。有很多方法可以做到这一点,具有不同的特性,因此对于不同的任务(以及在shell中使用(具有不同的适用性。

你说你不想使用文件或管道。我不确定为什么会这样(如果你在问题中说的话会很有帮助(,但IPC的其他方法包括:

  • 套接字(unix域、TCP等(
  • FIFOs
  • 共享内存
  • 信号
  • 消息队列
  • ptrace
  • 等等

选择一个:(

相关内容

  • 没有找到相关文章

最新更新