sed命令在命令行上运行,但在bash脚本中不起作用

时间:2015-03-24 18:44:51

标签: regex linux bash sed

我试图转换说出" 6.1M"到" 6.1 MB"。简单的sed命令吧?

($ SIZE已经达到6.1M)

SIZE=`echo $SIZE|sed 's/M/ MB/'`

这可以在命令行中找到。但是,当我作为bash脚本的一部分执行时,我收到此错误:

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

我试图用反斜杠逃避空间角色,但这并没有帮助。我也试过使用这种语法,无论有没有转义空间:

SIZE=$(sed 's/M/ MB/' <<< $SIZE)

同样的错误。这里发生了什么?

2 个答案:

答案 0 :(得分:0)

您正在运行什么版本的BASH?

bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

以上BASH适用于SIZE=$(sed 's/M/ MB/' <<< ${SIZE});

答案 1 :(得分:0)

原来这条线还可以。但是,我在后来的sed命令中使用了SIZE变量,问题出在那里。该命令周围没有单引号,因此变量中的空格字符导致错误。

感谢大家的回复!