【问题标题】:Execute a local bash variable inside double quotes在双引号内执行本地 bash 变量
【发布时间】:2012-06-04 19:59:48
【问题描述】:

假设我有四个网络服务器,我需要将一行 HTML 添加到文件中。如您所见,我需要整数出现在 cluster=

之后
for i in 01 02 03 04; do ssh web.${i}.domain.com 'echo "<img src=beacon.gif?cluster=${i}>" >> /var/www/index.html'; done

如何做到这一点?提前致谢。

【问题讨论】:

    标签: bash for-loop echo


    【解决方案1】:

    请注意${i}前后的'

    for i in 01 02 03 04; do
        ssh web.${i}.domain.com 'echo "<img src=beacon.gif?cluster='${i}'>" >> /var/www/index.html'
    done
    

    编辑: shell 中的引用和编程语言中的字符串文字之间存在巨大差异。在 shell 中,“引用用于删除某些字符或单词对 shell 的特殊含义”(bash 手册)。以下 to 行与 bash 相同:

    'foo bar'
    foo' 'bar
    

    不需要引用字母字符 - 但它增强了可读性。在您的情况下,只能引用 "&lt; 等特殊字符。但是变量$i 只包含数字,这种替换可以在引号之外安全地完成。

    【讨论】:

    • @nosid:我认为值得解释一下那里发生了什么。毕竟你最终做了一个字符串连接,你的解决方案与其他两个不同。仍然 +1。
    【解决方案2】:
    for i in 01 02 03 04
    do
      ssh web.${i}.domain.com "echo \"<img src=beacon.gif?cluster=${i}>\" >> /var/www/index.html
    done
    

    基本上,只使用双引号,但你必须转义内部的。

    【讨论】:

      【解决方案3】:

      我认为应该这样做:

      "echo \"<img src=beacon.gif?cluster=${i}>\" >> /var/www/index.html"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 2020-04-06
        • 1970-01-01
        • 2011-11-17
        • 2021-11-11
        相关资源
        最近更新 更多