sed抱怨bash脚本中的数字

沙雷莫克斯

我正在编写一个脚本,以将dafault配置值替换为用户指定的值。但是我从sed中得到了未终止的's'命令错误。经过2个小时的谷歌搜索,我仍然没有弄清楚是什么原因造成的。这些行是:

CONFIG_GMETAD_COMPUTENODES="scccompute1 scccompute2"
CONFIG_GMETAD="/etc/gmetad.conf"
sed -i 's/localhost/'${CONFIG_GMETAD_COMPUTENODES}'/g' ${CONFIG_GMETAD}

代替

sed -i 's/localhost/scccompute1 scccompute2/g' /etc/gmetad.conf

我得到的错误

sed: -e expression #1, char 23: unterminated `s' command

我看不到这里有什么问题,但很少与sed一起工作。

ghoti

您需要引用变量。注意sed命令如何扩展:

sed -i 's/localhost/'scccompute1 scccompute2'/g' /etc/gmetad.conf

这将创建多个选项,而不是您的sed脚本中的单个选项。相反,请尝试:

sed -i 's/localhost/'"${CONFIG_GMETAD_COMPUTENODES}"'/g' "${CONFIG_GMETAD}"

将变量包含在双引号中会使整个字符串被视为的单个参数sed,这是您想要的。当然,请在文件名两边加上引号,因为文件名可能包含特殊字符。通常,在bash中引用变量时,请始终用引号引起来。

请注意,如果嵌入式变量包含斜杠或其他特殊字符,则可能会破坏脚本。因此,您可能需要先进行一些完整性检查,然后再将其提供给sed

CONFIG_GMETAD_COMPUTENODES="${CONFIG_GMETAD_COMPUTENODES//[^a-z0-9 ]/}"

如果bash是您的shell,这将去除所有不是字母数字或空格的字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

sed抱怨bash脚本中的数字

来自分类Dev

rsync抱怨Bash脚本中的“缺少尾随”

来自分类Dev

sed无法从bash脚本中运行

来自分类Dev

在bash脚本中执行sed命令

来自分类Dev

在文件中查找数字(脚本,bash)

来自分类Dev

Bash脚本并引用SED

来自分类Dev

Bash脚本sed

来自分类Dev

使用sed命令从bash脚本中的文件中删除行

来自分类Dev

Bash脚本中的Sed-替换变量内容的错误原因

来自分类Dev

如何使用bash脚本中的变量使用sed更改行

来自分类Dev

sed bash脚本变量中的转义问号字符

来自分类Dev

从BASH调用的SED脚本:如何缩短输出中的变量路径?

来自分类Dev

sed在bash脚本中删除#和#之间的字符并添加:?

来自分类Dev

sed不会在脚本中扩展我的BASH变量

来自分类Dev

在bash脚本中执行sed:未知命令:`''`

来自分类Dev

遍历bash脚本中的参数并利用它们的数字

来自分类Dev

Hazel bash脚本或Applescript对txt文件中的数字求和

来自分类Dev

Bash脚本仅乘以文本文件中的数字?

来自分类Dev

Bash脚本,用于比较从剪切中获得的数字

来自分类Dev

替换sed中的数字

来自分类Dev

在bash脚本中用数字除

来自分类Dev

IntelliJ 13抱怨内联脚本中的“未转义的xml字符”

来自分类Dev

sed命令可在终端中运行,但不能通过bash_aliases或bash脚本运行

来自分类Dev

sed命令可在终端中运行,但不能通过bash_aliases或bash脚本运行

来自分类Dev

如何编写sed脚本以删除一行中的数字?

来自分类Dev

如何编写sed脚本以删除一行中的数字?

来自分类Dev

sed :sed 脚本中“s”的未知选项

来自分类Dev

为什么sh(不是bash)抱怨.bashrc中定义的函数?

来自分类Dev

如何在bash shell脚本中仅过滤字符串中的数字?

Related 相关文章

热门标签

归档