使用 EOF 发送变量并使用宿主变量

Mat*_*ron 2 shell ssh quoting here-document variable

我想将变量从源发送到主机,然后执行主机脚本。这是我的代码:

var1=1
ssh -p 42 root@xxx /bin/bash << EOF
  var2=2
  echo $var1
  echo $var2
EOF
Run Code Online (Sandbox Code Playgroud)

返回 : 1

var1=1
ssh -p 42 root@xxx /bin/bash << \EOF
  var2=2
  echo $var1
  echo $var2
EOF
Run Code Online (Sandbox Code Playgroud)

返回 : 2

如何返回:

1
2
Run Code Online (Sandbox Code Playgroud)

?

gle*_*man 5

您希望本地 shell 扩展$var1但远程 shell 扩展$var2

var1=1
ssh -p 42 root@xxx /bin/bash << EOF    # un-quoted/escaped
  var2=2
  echo $var1
  echo \$var2
EOF
Run Code Online (Sandbox Code Playgroud)