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

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

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

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


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

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

ssh $remote 'echo "`hostname`"'


它会工作。但是后来我不能使用$SCRIPT_VAR这样的脚本变量

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

最佳答案

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

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

关于linux - 防止ssh命令中参数的扩展/评估,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53298904/

10-13 05:34