我已經寫了一個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元字符,如'.','?','*'等。 –