我想編譯一個大型項目,我從互聯網下載,我有一個自定義腳本,運行configure,make和make install。問題是我想傳遞一些兼容性標誌,但是項目使用了不能識別LDFLAGS的libtool,我必須找到另一種方式來傳遞我的兼容性標誌。因此,在運行configure後,我的劇本我有代碼看起來像這樣:sed不能與變量
COMPATFLAG="-gcc-name=/usr/local/gcc-4.2.1/bin/gcc"
sed -i "s/CC -shared/CC -shared ${COMPATFLAG}/g" libtool
${COMPATFLAG}
的,所以我不能把它以明文的sed的聲明可能會根據正在編譯什麼平臺不同的值。問題是它不起作用 - 我得到一個空的空間而不是${COMPATFLAG}
的值。如果我改寫sed -i "s/CC -shared/CC -shared TEST/g" libtool
它將字符串「TEST」添加到文件中。如果我使用單引號,則得到${COMPATFLAG}
字符串,而不是變量的值。如果我嘗試導出${COMPATFLAG}
,它仍然不起作用。我不知道爲什麼會出現問題。任何想法?
另一個技巧是使用控制字符(如control-A或control-G)作爲分隔符; 「sed」不介意,與爭論衝突的可能性很小。 –
優秀點@JonathanLeffler。 – anubhava
甚至是'$'\ xFF'':'D = $'\ xFF'; sed -i「s $ {D} CC -shared $ {D}&$ {COMPATFLAG} $ {D} g」libtool' – konsolebox