GNU Parallel - 全局变量和函数

Mar*_*rry 4 linux sh gnu-parallel

我有这个脚本:

GLOBAL_VAR="some global value"

function test
{
  echo $1
  echo ${GLOBAL_VAR}
}

export -f test  
parallel --jobs 5 --linebuffer test ::: "${files[@]}"
Run Code Online (Sandbox Code Playgroud)

我怎样才能$GLOBAL_VAR从并行可见?

thr*_*rig 6

Shell 变量对子进程不可见,除非它们被导出,所以你需要说

export GLOBAL_VAR
Run Code Online (Sandbox Code Playgroud)

在启动子进程之前的某个地方;在现代 shell 中,导出可以与赋值结合使用

export GLOBAL_VAR="some global value"
Run Code Online (Sandbox Code Playgroud)