Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在生成shell脚本时,如何转义shebang行_Php_Bash_Shell - Fatal编程技术网

Php 在生成shell脚本时,如何转义shebang行

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-\${

我正在从脚本中生成一个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-\${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