近期在执行sed替换时遇到两个问题
1:sed: -e expression #1, char 19: unknown option to `s’
2:变量的参数是一串命令,无法被执行
代码如下
hdfs=`echo $(paste -d "," -s - < ./test)`
#变量的值是一串命令
echo "$hdfs"
#这里hdfs是可以正常输出的
dir=`cat [filepath]|grep '/data.*s'|sed "s#^.*<value>##g"|sed "s#</value>.*##g"`
echo "$dir"
#这里dir是可以正常输出的
sed -i "s!${dir}!${hdfs}!g" [filepath]
#执行命令失败
a=123456
#变量的参数是字符串
b=789
echo a |sed -i "s!${a}!${b}!g" ./4
#可以执行
百思不得其解
最终一次偶然间把sed命令的"!“改成”#",就执行成功了
sed -i "s#${dir}#${hdfs}#g" [filepath]
至于为啥 “!” 不行,目前没有找到答案,知道的大佬可以告知一下