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?
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