2009-09-17 93 views
0

我更換一個腳本里面的命令的問題,在腳本中出錯行看起來是這樣的:sed替換命令裏面的bash腳本?

nail -r "[email protected]" -s "Subject" -S smtp=255.255.255.255 

但我:

mail -s "$(hostname) on $(date)" 

應該有這樣的線來代替不能得到sed做替換:)我寫了一個小腳本,爲此目的:

#!/bin/bash 

old="mail -s \"\$(hostname) on \$(date)" 
new="nail -r \"[email protected]\" -s \"Subject\" -S smtp=255.255.255.255" 

sed -i 's|$old|$new|' script.sh 

有沒有人有任何建議?

回答

3
sed -i "s|$old|$new|" script.sh 

請注意雙引號。

+0

謝謝你指出這個愚蠢的錯誤:)我一直在使用SEED取代和追加雙引號在需要的地方,厭倦了逃脫他們,所以我剛開始把在單引號中,並忘記它:) – f10bit 2009-09-17 12:23:34

1

Sed默認情況下不會在位編輯。如果您正在使用gnu Sed,請嘗試提供就地標誌-ikbak

+0

OP有'-i'選項。唯一的區別是你的備份是使用(不尋常的?)後綴「kbak」創建的。 – 2009-09-17 13:04:31

+0

是的,只是想知道他是否使用GNU SED – ennuikiller 2009-09-17 15:03:22