当我尝试以下命令时,我想重写sql。
Day='2020/12/1'
Dir=/home/test/data
sql=`cat $Dir"/"$test".sql" | sed -e "s/Day/$Day/g"`
我犯了以下错误。
sed: -e expression #1, char 24: unknown option to `s'
为什么s被识别为选项?为什么这个命令不能正常工作?
如果有人有什么意见,请告诉我
感谢问题是斜杠:你的变量包含了它们,最后的命令会像sed "s/string/path/to/something/g",包含了太多的斜杠。
由于sed可以接受任何字符作为分隔符(无需声明新的分隔符),因此您可以尝试使用另一个没有出现在替换字符串中的字符,如下所示:
sql=`cat $Dir"/"$test".sql" | sed -e "s|Day|$Day|g"`
另外,您需要使用sed -i来就地更新文件,因为看起来这就是您要做的。