8

GNUParallelで環境変数を継承したいと思います。いくつかの「スクリプト」(実際には、GNU Parallelで使用するために設計されたコマンドのリスト)があり、それぞれが異なる外部プログラムを呼び出す数百行あります。ただし、これらの外部プログラム(私の制御不能)では、実行する前にいくつかの環境変数を設定する必要があります。

それらをローカルに設定/エクスポートすることは役に立たないようで、この情報をプロファイルに追加する方法がわかりません。

ドキュメントにはこれが何も含まれていないようで、同様のSOページでは、コマンドをスクリプトでラップすることを提案しています。ただし、これはエレガントでない解決策のようです。現在の環境をエクスポートする方法、またはスクリプトで必要な変数を指定する方法はありますか?

ありがとう!

4

1 に答える 1

9

これは私のために働きます:

FOO="My  brother's  12\"  records"
export FOO
parallel echo 'FOO is "$FOO" Process id $$ Argument' ::: 1 2 3

(sshを介した)リモート接続で機能させるには、シェル拡張用の変数を引用符で囲む必要があります。parallel --shellquoteあなたがそれをするのを助けることができます:

parallel -S server export FOO=$(parallel --shellquote ::: "$FOO")\;echo 'FOO is "$FOO" Process id $$ Argument' ::: 1 2 3

それでも問題が解決しない場合は、機能しない例を示すことを検討してください。

- 編集 -

--envバージョン20121022で導入されたものを見てください

- 編集 -

env_parallel20160322に導入されたものを見てください。

于 2012-08-24T21:52:37.830 に答える