我已经写了一个bash脚本,它在一个文件上调用一个sed命令(其中包括)来完成一个查找/替换2个不同的字符串。SED命令不能从bash脚本运行
麻烦的是,在运行脚本之后,我检查了这些文件,没有任何更新。但是,如果我运行正在生成的命令(无论如何都将它们作为输出回显),那么它们就可以工作。
例如,在脚本中我有:
echo "/usr/local/bin/sed -i -e 's/${String1}/${String1R}/g;s/\/${String2}\//\/${String2R}\//g' ${ROOT_DIR}/data/file.sql"
/usr/local/bin/sed -i -e 's/${String1}/${String1R}/g;s/\/${String2}\//\/${TString2R}\//g' ${ROOT_DIR}/data/file.sql
运行脚本不file.sql变化;但是,如果我运行打印到控制台的命令,例如/ usr/local/bin/sed -i -e's/file_name1/file_name2/g; s // path_substring1 /// path_substring2 // g'/path/to/file/file.sql它完美的工作!
我没有得到“回声”的目的...... – opalenzuela
只是为了调试 – user2294382
你使用“string”这个词很多,但你的脚本没有做字符串比较,它是做正则表达式比较,是好?它会回来咬你,如果“String1”。例如,包含RE元字符,如'.','?','*'等。 –