【问题标题】:Use $HOSTNAME in sed substitution [duplicate]在 sed 替换中使用 $HOSTNAME [重复]
【发布时间】:2014-08-01 19:37:46
【问题描述】:

我想在对sed 的调用中使用我的 Centos VM 的 $HOSTNAME,如下所示:

sed -i 's/Apache 2 Test Page/$HOSTNAME Test Page/g' /var/www/error/noindex.html

但这只是将Apache 2 Test Page 替换为$HOSTNAME Test Page...我知道我可以手动完成,但我有充分的理由希望这样做。


FWIW,我实际上是在一个从 Vagrantfile 调用的 bash 脚本中执行此操作,该脚本反过来提供多个 VM(每个都安装了 Apache2),以便我可以测试负载平衡功能HAProxy 的。所以我只想要一种简单的方法来区分我的 3 个 Web 服务器,并且我认为修改默认 Apache 页面是最简单的方法。

【问题讨论】:

  • 将 sed's(s///) 用双引号而不是单引号括起来以进行变量扩展。
  • @AvinashRaj 是的,这里也可以。我更喜欢我发布的解决方案,因为这样我就不必担心在 sed 命令中转义 shell 字符。 (在这种情况下这不是问题)

标签: linux bash unix sed hostname


【解决方案1】:

seds/// 用双引号而不是单引号括起来以进行变量扩展。

sed -i "s/Apache 2 Test Page/$HOSTNAME Test Page/g" /var/www/error/noindex.html

例子:

$ echo 'foo Apache 2 Test Page bar' | sed "s/Apache 2 Test Page/$HOSTNAME Test Page/g"
foo avinash-Lenovo-IdeaPad-Z500 Test Page bar

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2012-09-22
    • 2017-03-07
    • 2014-06-26
    • 1970-01-01
    • 2010-11-29
    • 2019-03-07
    • 2020-12-23
    • 2014-01-09
    相关资源
    最近更新 更多