2016-01-29 51 views
1

我有一个脚本可以完成sed替换,并且它的所有功能都在禁止这一行。某些Sed替换在Bash脚本中不起作用

奇怪的是,它正常工作,当我只是在终端上运行它。

我想替换的代码是该块的一部分:

location ~ \.php$ { 
    try_files $uri =404; 
    fastcgi_pass unix:/var/run/php-fpm.sock; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
} 

特别这一行: fastcgi_pass unix:/var/run/php-fpm.sock; 我想改变。

下面是我用它来试图取代它的代码:

sed -i "s#fastcgi_pass unix:/var/run/php-fpm.sock;#fastcgi_pass unix:/var/run/php7.0-fpm.sock;#" /etc/nginx/sites-available/lemp-stack.app 

出于某种原因,它只是不代替。

有没有人有任何想法?

谢谢。

+0

我建议你来运行'bash的-x yourfile'剧本看什么是实际执行。在我的机器上,一切都按预期工作。 –

回答

0

有可能代替passunix之间的空间的选项卡,如果是的话,这应该工作:

sed "s#fastcgi_pass[ \t]unix:/var/run/php-fpm.sock;#fastcgi_pass unix:/var/run/php7.0-fpm.sock;#"