Bash在远程上下文中使用之前在本地解析变量

时间:2017-06-26 05:42:32

标签: linux bash ssh quoting

我有一个脚本在远程计算机上设置了一些环境变量,但是我遇到了一些问题,在远程计算机的上下文中解决了一些变量。必须在发送到远程数据之前解析这些变量。

#!/bin/bash
devIP=$(ifconfig | sed -En \'s/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
#10.0.0.1

ssh -A ubuntu@remote '\
export variable="$devIP";\
echo $variable'
#Will echo blank as it is trying to resolve $devIP under the remote context.

如何将脚本执行程序的IP正确地提供给远程计算机上的环境变量?

1 个答案:

答案 0 :(得分:1)

考虑以下命令

ssh -A ubuntu@remote "\
export variable=$devIP;\
echo \$variable"

此处在命令行参数

中对变量$devIP在本地计算机上执行变量替换
export variable=$devIP; echo \$variable

因为双引号。

然而,使用反斜杠保护变量$variable不受本地替换。