防止ssh命令中参数的扩展/评估

时间:2018-11-14 11:13:34

标签: linux shell ssh

我有一个可在远程服务器上运行docker容器的shell脚本。

我正在尝试将远程服务器的主机名发送到容器中,但我只是获得运行脚本的本地计算机的主机名。

该命令在脚本中如下所示:

public class Point {

    int x;
    int y;

    Point(int x, int y){
        this.x = x;
        this.y = y;
    }
    Point center(Point other) {
        return new Point((x + other.x) / 2, (y + other.y) / 2); // How to print this value?
    }
    public void printPoint() {
        System.out.println("(" + x + "," + y + ")"); //Value of x and y
   }

}

public class Main {

        public static void main(String[] args) {
            Point p = new Point(1,5); 
            p.printPoint();
        }
}

主机名和环境变量host.hostname都成为本地计算机的名称。

我知道我可以这样使用单引号:

ssh $remote "docker run -h '`hostname`' \
                        -e 'VARIABLE=$SCRIPT_VAR' \
                        -e 'HOST_HOSTNAME=`hostname`' \
                        ..."

,它将起作用。但后来我不能使用ssh $remote 'echo "`hostname`"'

这样的脚本变量

我该如何在远程服务器上进行评估,同时还能使用变量?

1 个答案:

答案 0 :(得分:1)

您仍然需要确保引用geometry的扩展名,以防止其受到单词拆分或路径名扩展的影响。

$SCRIPT_VAR