【问题标题】:Escaping $ variable in sed over ssh command?通过 ssh 命令在 sed 中转义 $ 变量?
【发布时间】:2017-01-24 16:11:33
【问题描述】:

我有这样的命令:

ssh user@hostname 'sed -e "s|foo|${bar}|" /home/data/base_out.sql > /home/data/out.sql'

sed 命令在本地 shell 中运行。但它并没有通过 ssh 命令扩展变量。谢谢!

【问题讨论】:

    标签: shell ssh command-line sed terminal


    【解决方案1】:

    规则是在单引号内,参数不展开。整个命令周围有单引号。

    试试这个:

    ssh user@hostname "sed -e 's|foo|$bar|' /home/data/base_out.sql > /home/data/out.sql"
    

    现在 $bar 在命令字符串作为参数传递给 ssh 之前被扩展,这就是你想要的。

    我删除了${bar} 周围的花括号,因为我认为它们提供了一种虚假的安全感。在这种情况下,它们不会保护您免受与using shell variables in sed commands 相关的任何问题。

    【讨论】:

      猜你喜欢
      • 2013-07-08
      • 2016-07-25
      • 1970-01-01
      • 2015-12-27
      • 2019-02-07
      • 2013-04-05
      • 2016-08-25
      • 2020-05-28
      • 1970-01-01
      相关资源
      最近更新 更多