2012-11-01 71 views
1

我有一個bash腳本,我用它來在我的服務器上設置一個簡單的php腳本。我遇到了如何用腳本正確更改sed的變量。這是我曾嘗試:

echo "Enter Portal Password:" 
read PORTPASS; 
sed -i 's/$ppass =".*"/$ppass ="$PORTPASS"/' includes/config.php 

上述變化在配置文件中的變量,但它只是它改變$PORTPASS它不會在腳本將其更改爲我輸入。

我也試過這個,它確實改變了$PORTPASS,但它刪除了文件中變量周圍的" "

sed -i 's/$ppass ='".*"'/$ppass ='"$PORTPASS"';/' includes/config.php 

這裏是我想在conf.php文件來改變:$ppass ="password";

+0

你爲什麼在標題中有ssh?你想遠程更改config.php嗎?如果是這樣,請編輯您的問題以包含此信息,否則請修改您的標題。祝你好運。 – shellter

回答

0

嘗試:

sed -i "s/\$ppass =\".*\"/\$ppass =\"$PORTPASS\"/" includes/config.php 

你必須使用雙引號(")周圍的命令,以便在將shell傳遞給sed之前,shell將評估$PORTPASS,因此您必須「跳過」命令中的所有雙引號。

+0

謝謝,這工作:)唯一奇怪的是它也取代了下面的變數,也就是說,在更改密碼後,我得到:$ ppass =「cheese」; $ css =「cheese」; $ filedir =「cheese」; – jcrane

+0

@ user1792287:對不起,我的錯誤,我忘記了在「ppass」前面的'$'。 shell將它評估爲沒有(它沒有這樣的變量),所以sed只是把'=「。*」'改成'=「cheese」'。我糾正了我的答案。 – Beta

+0

再次感謝您的回覆,我使用了您的更新代碼,並且它不會更改密碼。 – jcrane