Php 在生成shell脚本时,如何转义shebang行
我正在从脚本中生成一个shell脚本,它需要根权限,因此我使用Php 在生成shell脚本时,如何转义shebang行,php,bash,shell,Php,Bash,Shell,我正在从脚本中生成一个shell脚本,它需要根权限,因此我使用 sudo bash -c "echo 'Hello There!' > '/var/www/cgi-bin/php-cgi-5.3.8'" 如果我试图输出shebang行,但我不确定如何转义它,我会得到一个错误——就像我对其他变量所做的那样 sudo bash -c "echo '#!/bin/bash version=\"5.3.8\" export PHPRC=/etc/php/phpfarm/inst/php-\${
sudo bash -c "echo 'Hello There!' > '/var/www/cgi-bin/php-cgi-5.3.8'"
如果我试图输出shebang行,但我不确定如何转义它,我会得到一个错误——就像我对其他变量所做的那样
sudo bash -c "echo '#!/bin/bash
version=\"5.3.8\"
export PHPRC=/etc/php/phpfarm/inst/php-\${version}/lib/php.ini
export PHP_FCGI_CHILDREN=3
export PHP_FCGI_MAX_REQUESTS=5000
exec /etc/php/phpfarm/inst/php-\${version}/bin/php-cgi' > '/var/www/cgi-bin/php-cgi-5.3.8'"
我哪里出错了?代码代码>可能正试图替换为历史记录中的某些内容。试试
…'\\/bin/bash…
正在bash_历史记录中查找以“”
开头的命令。你应该有这个取消引号并用反斜杠将其转义。你也可以把\
从引号中去掉并转义,因为\
比两个引号短
sudo bash -c "echo \#\!'/bin/bash
version=\"5.3.8\"
export PHPRC=/etc/php/phpfarm/inst/php-\${version}/lib/php.ini
export PHP_FCGI_CHILDREN=3
export PHP_FCGI_MAX_REQUESTS=5000
exec /etc/php/phpfarm/inst/php-\${version}/bin/php-cgi' > '/var/www/cgi-bin/php-cgi-5.3.8'"
我认为第一个单引号应该在“echo”之后。@gpojd不,它在正确的位置。这就是为什么我逃过了
#
@palp.R.O.——很好的提示,非常感谢。或者先执行此操作set+o histexpand