bash 中 sed 未终止的 s 命令出错

Posted

技术标签:

【中文标题】bash 中 sed 未终止的 s 命令出错【英文标题】:Error with sed unterminated s command in bash 【发布时间】: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 所说的那样删除它们,那么问题应该已经消失了。换行符和斜杠一样仍然是个问题。 见***.com/questions/29613304/… 【参考方案1】:

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

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

【讨论】:

这里使用@是为了让/在变量值中没有问题。它将问题换成变量值中的@。因此,您需要选择输入中不能正确执行此操作的内容。 @Etan Reisner:是的,我知道 :) 仍然感谢您的提及。无论如何,似乎 OP 解决了他的问题(等待解释......)。 是的,那不是给你的,而是给 OP/etc 的。

以上是关于bash 中 sed 未终止的 s 命令出错的主要内容,如果未能解决你的问题,请参考以下文章

sed 错误:sed:-e 表达式 #1,字符 22:未终止的 `s' 命令

sed:-e 表达式 #1,字符 18:未终止的“s”命令

Bash - 在一段时间后终止命令[重复]

sed中没有未命令的's'命令[重复]

在Linux中执行sed命令报错“-bash: s/test/big: No such file or directory“

在Linux中执行sed命令报错“-bash: s/test/big: No such file or directory“