首页 > 解决方案 > 读取嵌套引号中的变量

问题描述

我想 ssh 进入主机并启动容器并运行一些命令。所以代码将是这样的:

ssh $host 'screen -L -d -m bash -c "docker run "\
  "--network=host -v ~/data:/data myimage:${TAG_NAME}"\
  " /bin/bash -c \" some command.... \""'

问题很简单,因为我使用的是单引号,所以我无法阅读${TAG_NAME}. 有没有办法编写这种嵌套引号并传递变量?

标签: bashssh

解决方案


您可以停止和启动单引号以包含环境变量,如下所示:

echo 'foo'"$HOME"'foo'

对于您的示例,在运行的命令中包含 env var(来自本地系统)的$host方法是:

ssh $host 'screen -L -d -m bash -c "docker run'\
 ' --network=host -v ~/data:/data myimage:'"$TAG_NAME"\
 ' /bin/bash -c \" some command.... \""'

推荐阅读