【问题标题】:Error with sed unterminated s command in bashbash 中 sed 未终止的 s 命令出错
【发布时间】:2015-09-25 10:33:20
【问题描述】:

我在 bash 脚本中使用 sed 时遇到问题。 这是一行:

sed -i "s/"$name"/"$input"/g" ~/input.script

我收到此错误: sed: -e 表达式 #1, char 24: 未终止的 `s' 命令

奇怪的是,它在我的代码的早期版本中工作。我一直在解决问题,但找不到解决方案。

【问题讨论】:

  • 您的变量中可能有一个换行符或斜杠,这让 sed 感到困惑。
  • @EtanReisner 我是个白痴。这最终成为错误。变量中有一个空格。
  • 空格只会导致不带引号的变量出现问题。因此,如果您像 Eugeniu Rosca 所说的那样删除它们,那么问题应该已经消失了。换行符和斜杠一样仍然是个问题。

标签: bash sed


【解决方案1】:

您不需要嵌套引号。另外,尝试更改分隔符:

sed -i "s@$name@$input@g" ~/input.script

【讨论】:

  • 这里使用@是为了让/在变量值中没有问题。它将问题换成变量值中的@。因此,您需要选择输入中不能正确执行此操作的内容。
  • @Etan Reisner:是的,我知道 :) 仍然感谢您的提及。无论如何,似乎 OP 解决了他的问题(等待解释......)。
  • 是的,那不是给你的,而是给 OP/etc 的。
猜你喜欢
  • 2019-05-04
  • 2012-05-05
  • 1970-01-01
  • 2016-07-29
  • 2018-02-01
  • 1970-01-01
  • 2013-11-27
  • 2013-06-11
  • 2012-07-10
相关资源
最近更新 更多