远程执行的复杂bash命令中的变量值

时间:2019-05-29 10:28:22

标签: bash for-loop ssh

我想在远程主机上运行复杂的命令列表。 通过使用此类命令创建另一个脚本,然后调用我的其他脚本(有或没有将其复制到远程主机),我都可以轻松解决,但是我不想这样做。 我的问题是我有一些对于整个脚本固定的变量,然后有for循环变量。我可以在远程主机上对两者之一进行正确评估,但是两者都不可以。 我在类似问题上发现的所有内容都是关于在不同元素周围使用注释引号“或”的讨论。固定变量和循环变量不能同时使用。

fixed_value="blue"

ssh remote_host << "EOF"
    value_list="VALUE1 VALUE2"
    for i in $value_list; do
        echo "executing $i"
        my_program -arg1 $i -arg2 "$fixed_value"
    done
EOF

我期望的是运行带有两个参数的my_program(远程主机上的二进制文件),一个是固定的,实际上是作为输入传递给本地脚本的,另一个是从固定值列表中读取的,因此,在该示例中,我应该最终在远程主机上执行以下操作:

my_program -arg1 VALUE1 -arg2 blue
my_program -arg1 VALUE2 -arg2 blue

我可能需要一种将值“传递”到远程主机中正在执行的脚本的方法,或者在发送命令之前强制对$ fixed_value进行求值(我尝试使用引号来执行此操作,但此方法不起作用),而不会阻止在远程主机上对$ i进行评估。因为我通过切换引号(或删除引号或更改引号)而得到的只是:

my_program -arg1 -arg2 blue
my_program -arg1 -arg2 blue

my_program -arg1 VALUE1 -arg2
my_program -arg1 VALUE2 -arg2

编辑:如果您正确地阅读了问题,您将已经理解您的重复@inian不会回答我的问题。我的问题是,内部变量和外部变量都在适当的时候展开,该问题一次只能解决两种问题,而实际上没有任何建议解决我的问题。我已经可以对内部或外部进行适当的扩展。

0 个答案:

没有答案