這是我當前的代碼。我試圖用另一個文件名替換文件中的文件名字符串。但我目前得到的錯誤試圖讓sed用另一個文件路徑替換文件中的文件路徑
「的sed:1: 「S /目錄= 」[A-ZA-Z0 ...「:壞的標誌替換命令: 'U'」
什麼不對這個代碼
function restart_existing()
{
old="directory = \"[A-Za-z0-9\/]\""
new="directory = \"$1\""
sed -i '' "s/$old/$new/" "$HOME/angelpretendconfig"
}
restart_existing "$HOME/blahblahblah/shoot/blah"
編輯:?! 謝謝,我已經通過了你的建議,並適應代碼
function restart_existing()
{
old="directory = \"*\""
printf -v new 'directory = "%s"' "$1"
sed -i '' "s;$old;$new;" "$HOME/angelpretendconfig"
}
restart_existing "Query"
但現在有問題的線路從
directory = "/home/jamie/bump/server"
directory = "Query"/home/jamie/bump/server"
爲什麼會發生這種情況?
謝謝!我採納了你的建議,並修改了代碼。 功能restart_existing() { 老= 「目錄= \」 * \ 「」 printf的-v新 '目錄= 「%S」' 「$ 1」 SED -i ''「秒; $舊; $新;」 「$ HOME/angelpretendconfig」 } restart_existing 「查詢」 但現在線從 目錄=行 「/家/傑米/凹凸/服務器」 目錄= 「查詢」/家/傑米/凹凸/服務器「 爲什麼會發生這種情況? – 2012-07-18 22:35:16
@KennethTiong因爲'sed's; directory = \」* \「; something;''表示*替換'directory ='後面跟着任意數量的雙引號(加一) something' * – kojiro 2012-07-18 22:43:27