そこで私は、サーバもクライアントも変更せずに、sshを通して環境変数を転送する方法を見つけました。 SSHによる環境変数の転送/ bash / sh / csh / tcshでの引用
しかし、私はこのようなbash関数を転送できるようにしたいと思います。
$ myfunc() {
> echo Func $1
> }
$ export -f myfunc
$ parallel myfunc ::: a
Func a
関数はsshを介して転送されません。
$ parallel -S server myfunc ::: a
bash: myfunc: command not found
$ parallel --env myfunc -S server myfunc ::: a
bash: line 2: myfunc: command not found
しかし、関数の内容はうまく転送されます。
$ parallel --env myfunc -S server echo \$myfunc ::: a
() { echo Func $1} a
だから私が今やらなければならないのは、$ myfuncが本当に関数myfuncであることをどうにかしてbashに伝えることです。
どうやってやるの?
env_parallel
GNU Parallelから。それは機能以上に働きます。