我想在 GNU Parallel 中继承环境变量。我有几个“脚本”(实际上只是命令列表,设计用于 GNU Parallel),每行都有数百行,它们都调用不同的外部程序。但是,这些外部程序(我无法控制)需要在运行之前设置几个环境变量。
在本地设置/导出它们似乎没有帮助,而且我看不到任何方法可以将此信息添加到配置文件中。
文档似乎没有任何内容,类似的 SO 页面建议将命令包装在脚本中。然而,这似乎是一个不优雅的解决方案。有没有办法导出当前环境,或者在脚本中指定所需的变量?
谢谢!
我想在 GNU Parallel 中继承环境变量。我有几个“脚本”(实际上只是命令列表,设计用于 GNU Parallel),每行都有数百行,它们都调用不同的外部程序。但是,这些外部程序(我无法控制)需要在运行之前设置几个环境变量。
在本地设置/导出它们似乎没有帮助,而且我看不到任何方法可以将此信息添加到配置文件中。
文档似乎没有任何内容,类似的 SO 页面建议将命令包装在脚本中。然而,这似乎是一个不优雅的解决方案。有没有办法导出当前环境,或者在脚本中指定所需的变量?
谢谢!
这对我有用:
FOO="My brother's 12\" records"
export FOO
parallel echo 'FOO is "$FOO" Process id $$ Argument' ::: 1 2 3
要使其适用于远程连接(通过 ssh),您需要引用变量以进行 shell 扩展。parallel --shellquote
可以帮助您做到这一点:
parallel -S server export FOO=$(parallel --shellquote ::: "$FOO")\;echo 'FOO is "$FOO" Process id $$ Argument' ::: 1 2 3
如果这不能解决您的问题,请考虑显示一个不起作用的示例。
- 编辑 -
看看--env
20121022版中介绍的
- 编辑 -
看看env_parallel
20160322中介绍的。