我正在从脚本中生成一个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'"

我哪里做错了?

最佳答案

!正在您的bash\u历史中寻找以'开头的命令。你应该有'!'不带引号,用反斜杠转义。您也可以将#从引号中取出并对其进行转义,因为\比两个引号短。

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'"

关于php - 生成shell脚本时如何逃脱shebang行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10485483/

10-16 18:10