So habe ich einen Weg gefunden, Umgebungsvariablen über ssh zu übertragen, ohne Server oder Client ändern zu müssen: Umgebungsvariablen über SSH / quoting in bash / sh / csh / tcsh übertragen
Aber ich möchte auch Bash-Funktionen wie diese übertragen können:
$ myfunc() {
> echo Func $1
> }
$ export -f myfunc
$ parallel myfunc ::: a
Func a
Funktionen werden nicht über ssh übertragen:
$ parallel -S server myfunc ::: a
bash: myfunc: command not found
$ parallel --env myfunc -S server myfunc ::: a
bash: line 2: myfunc: command not found
Der Inhalt der Funktion wird aber übersichtlich übertragen:
$ parallel --env myfunc -S server echo \$myfunc ::: a
() { echo Func $1} a
Es scheint also alles, was ich jetzt tun muss, zu sein, um bash irgendwie mitzuteilen, dass $ myfunc wirklich die Funktion myfunc ist.
Wie kann ich das machen?
quelle
env_parallel
von GNU Parallel verwenden. Es funktioniert für mehr als nur Funktionen.