bash,sed和嵌套变量

时间:2013-09-16 23:13:55

标签: bash variables sed

为什么此代码会返回错误?

#!/bin/bash
ARG=$1
MYVAR="TEST"
FILE="/path/to/file/$ARG"
AAA="/path/test/$MYVAR"
BBB="foo bar $AAA bar foo $AAA"

sed -i -e "s/TEXT/$BBB/g" $FILE

sed:-e表达式#1,字符58:对's'的未知选项

2 个答案:

答案 0 :(得分:2)

您的替换($BBB)中包含斜杠,与sed使用的分隔符相同。使用另一个:

sed -i -e "s|TEXT|$BBB|g" $FILE

答案 1 :(得分:1)

使用调试模式(使用#!/bin/bash -x作为shebang):

+ ARG=foo
+ MYVAR=TEST
+ FILE=/path/to/file/foo
+ AAA=/path/test/TEST
+ BBB='foo bar /path/test/TEST bar foo /path/test/TEST'
+ sed -i -e 's/TEXT/foo bar /path/test/TEST bar foo /path/test/TEST/g' /path/to/file/foo
sed: -e expression #1, char 18: unknown option to `s'

其他人给出了解释。