在并行环境中运行带有参数的脚本的多个实例

在并行环境中运行带有参数的脚本的多个实例

我有一个连接到 Openshift 并在 POD 上启动一系列命令的脚本。由于我正在使用多个 PaaS,因此我需要使用不同的连接命令在每个 PaaS 上启动脚本

如果我按顺序执行此操作,则一切正常,但需要很长时间,因此我更喜欢并行启动所有命令

在同一环境中并行启动它们会导致连接相互覆盖

我找到了这篇文章如何在bash中干净的环境中运行程序?在这里看起来很有希望,但是它不允许我向我正在启动的脚本发送参数

我的代码现在看起来像这样:

#Get argument values
...
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
env -i ~/Path/To/script.sh -a1 value -a2 ${variable1} -a3 ${variable2} -- --noprofile -norc &
...
#Process resulting output

在这种情况下 script.sh 似乎没有收到作为变量发送的参数值

关于如何通过知道我无法在脚本中写入变量参数(因为它是敏感信息)来获取变量参数的任何想法?

谢谢大家,

问候, 吉恩

答案1

--norc和两个选项--noprofilebash解释器的选项。这意味着您必须显式调用解释器才能将这些选项传递给它:

env -i bash --norc --noprofile ~/Path/To/script.sh -a1 value -a2 "$variable1" -a3 "$variable2"

在这里,我还可以自由地在命令中未加引号的变量周围添加引号,并删除不必要的花括号。

相关内容