Pasar y establecer variables en un henetworkingoc

Tengo un script que tiene que hacer muchas cosas diferentes en muchas máquinas remotas diferentes. Pensé que un henetworkingoc funcionaría para esto, pero no puedo usar una variable definida en otro lugar en el script y una definida en el henetworkingoc.

Aquí hay un código:

#!/bin/sh FOO="foo" ssh some.remote.host << EOF BAR="bar" echo "FOO=$FOO" echo "BAR=$BAR" EOF 

Esto solo imprime lo siguiente:

FOO =

BAR = bar

Sin embargo, si cito la línea EOF de la siguiente manera: ssh some.remote.host << "EOF" entonces solo imprime lo siguiente:

FOO = foo

BAR =

¿Alguna pista sobre cómo puedo usar ambas variables dentro del henetworkingoc?

Gracias.

Si deja la palabra key henetworkingoc (es decir, EOF ) sin comillas, el cuerpo henetworkingoc se procesa localmente, por lo que $FOO se expande a foo y BAR se expande a la cadena vacía. Entonces tu command ssh convierte en:

 BAR="bar" echo "FOO=foo" echo "BAR=" 

Si cita la palabra key henetworkingoc, entonces se suprime la expansión de variables, de modo que su command ssh convierta en esto:

 BAR="bar" echo "FOO=$FOO" echo "BAR=$BAR" 

Como FOO probablemente no está definido en el entorno de shell remoto, la expresión "FOO=$FOO" se evalúa como "FOO=''" , es decir, FOO se establece en la cadena vacía.

Si desea utilizar ambas variables, deberá dejar la palabra key henetworkingoc sin comillas, de modo que la expansión de variables tenga lugar para la variable definida localmente, y luego escape (con una barra invertida) la variable que desea expandir de forma remota, es decir, :

 #!/bin/sh FOO="foo" ssh some.remote.host << EOF BAR="bar" echo "FOO=$FOO" echo "BAR=\$BAR" EOF 

En este caso, su command ssh (tal como lo recibió el server remoto) será el siguiente:

  BAR="bar" echo "FOO=foo" echo "BAR=$BAR"