Bash 在使用Gnu并行时同步对shell变量的访问(即Gnu并行中的关键部分)

Bash 在使用Gnu并行时同步对shell变量的访问(即Gnu并行中的关键部分),bash,parallel-processing,gnu-parallel,Bash,Parallel Processing,Gnu Parallel,我有一个for循环,我想将其转换为并行。但是,我在循环中附加了一个全局(bash)数组。处理这种情况的推荐方法是什么?除了保持秩序之外,并行是否在作业之间提供任何形式的同步 我想用flock和echo>的组合来替换我的数组,但是我想知道是否有一种标准的方法来实现带有parallel的“关键部分”,Bash只有“线程本地”变量。没有可以从不同线程更新的全局变量。所有变量/数组都复制到子流程中,其中一个变量/数组中的更改不会反映在另一个变量/数组中 更一般的答案是——如果您有可以从不同进程更新的资源

我有一个
for
循环,我想将其转换为
并行
。但是,我在循环中附加了一个全局(
bash
)数组。处理这种情况的推荐方法是什么?除了保持秩序之外,
并行
是否在作业之间提供任何形式的同步

我想用
flock
echo>的组合来替换我的数组,但是我想知道是否有一种标准的方法来实现带有
parallel

的“关键部分”,Bash只有“线程本地”变量。没有可以从不同线程更新的全局变量。所有变量/数组都复制到子流程中,其中一个变量/数组中的更改不会反映在另一个变量/数组中


更一般的答案是——如果您有可以从不同进程更新的资源——将使用GNU parallel附带的
sem

bash
确实具有全局范围,但我明白您对子进程的意思。感谢您指向
sem
的指针。感谢您的编辑。更准确地说,bash根本不支持生成线程,只支持生成新进程。所以共享全局变量没有任何意义。