2012-11-01 72 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