GNU Parallel - globale Variablen und Funktion

772
Martin Perry

Ich habe dieses Skript:

GLOBAL_VAR="some global value"  function test { echo $1 echo $ }  export -f test  parallel --jobs 5 --linebuffer test ::: "$" 

Wie kann ich $GLOBAL_VARvon Parallel aus sehen?

4

2 Antworten auf die Frage

6
thrig

Shell-Variablen sind für untergeordnete Prozesse nur sichtbar, wenn sie exportiert werden

export GLOBAL_VAR 

irgendwo vor dem Kindprozess; In modernen Shells kann der Export mit der Zuordnung kombiniert werden

export GLOBAL_VAR="some global value" 
0
Ole Tange

" Shell-Variablen sind für untergeordnete Prozesse nicht sichtbar, wenn sie nicht exportiert werden " - und sie sind auch dann nicht sichtbar, wenn Sie einen Befehl remote ausführen. Das heißt, es sei denn, Sie verwenden env_parallelein Frontend für GNU Parallel, das die Umgebung kopiert:

 . `which env_parallel.bash`  aliases alias myecho='echo aliases' env_parallel myecho ::: work env_parallel -S server myecho ::: work env_parallel --env myecho myecho ::: work env_parallel --env myecho -S server myecho ::: work  functions myfunc() { echo functions $*; } env_parallel myfunc ::: work env_parallel -S server myfunc ::: work env_parallel --env myfunc myfunc ::: work env_parallel --env myfunc -S server myfunc ::: work  variables myvar=variables env_parallel echo '$myvar' ::: work env_parallel -S server echo '$myvar' ::: work env_parallel --env myvar echo '$myvar' ::: work env_parallel --env myvar -S server echo '$myvar' ::: work  arrays myarray=(arrays work, too) env_parallel -k echo '$]}' ::: 0 1 2 env_parallel -k -S server echo '$]}' ::: 0 1 2 env_parallel -k --env myarray echo '$]}' ::: 0 1 2 env_parallel -k --env myarray -S server echo '$]}' ::: 0 1 2