【问题标题】:Read variables in nested quotes读取嵌套引号中的变量
【发布时间】:2019-09-27 01:35:31
【问题描述】:

我想通过 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}。有没有办法写这种嵌套的引号,也可以传递变量?

【问题讨论】:

    标签: bash ssh


    【解决方案1】:

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

    echo 'foo'"$HOME"'foo'
    

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

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

    【讨论】:

    • 变量引用应该(几乎)总是双引号。在这种情况下,这意味着结束单引号部分,开始一个双引号部分,使用变量,然后结束双引号部分并开始一个新的单引号部分:echo 'foo'"$HOME"'foo'
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2010-11-30
    • 2018-05-07
    • 1970-01-01
    相关资源
    最近更新 更多