某些Sed替换不能用于Bash脚本

时间:2016-01-29 00:13:32

标签: php regex bash unix sed

我有一个脚本可以进行相当多的sed替换,这一切都可以解决这一行问题。

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

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

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

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

有人有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

passunix之间可能有一个标签而不是空格,如果是这种情况,则应该有效:

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