代码之家  ›  专栏  ›  技术社区  ›  Steve McLeod

如何在sed[duplicate]中使用bash脚本变量

  •  15
  • Steve McLeod  · 技术社区  · 14 年前

    #!/bin/bash
    version=$1
    echo $version
    sed 's/\${version.number}/$version/' template.txt > readme.txt
    

    我希望用变量“version”的内容替换${version.number}的所有实例。而是插入文本$version。

    要让sed改用$version的当前值,我需要做什么?

    3 回复  |  直到 14 年前
        1
  •  21
  •   Matthew Flaschen    14 年前
    sed "s/\${version.number}/$version/" template.txt > readme.txt
    

    只有双引号才能替换美元符号。这也意味着单引号不需要转义美元符号。

        2
  •  4
  •   Tobias Kienzler    10 年前

    您也可以简单地取消引用变量

    sed 's/'${version.number}'/'$version'/' template.txt > readme.txt
    
        3
  •  0
  •   J Mac    9 年前

    对我来说,它使用了双重转义,正如菲利普所说(如果你使用转义括号…):

    #!/bin/bash
    LIVE_DB_NAME='wordpress';
    STAGING='staging';
    sed -r "s/define\('DB_NAME', '[a-zA-Z0-9]+'\);/define('DB_NAME', '\\${LIVE_DB_NAME}');/" ${STAGING}/wp-config.php >tmp1;