我有一个连接到 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
和两个选项--noprofile
是bash
解释器的选项。这意味着您必须显式调用解释器才能将这些选项传递给它:
env -i bash --norc --noprofile ~/Path/To/script.sh -a1 value -a2 "$variable1" -a3 "$variable2"
在这里,我还可以自由地在命令中未加引号的变量周围添加引号,并删除不必要的花括号。