生成shell脚本时如何逃避shebang line

时间:2012-05-07 16:16:44

标签: php bash shell

我正在脚本中生成一个shell脚本,它需要root权限,所以我使用

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

我在哪里错了?

2 个答案:

答案 0 :(得分:5)

!正在寻找以bash_history中的'开头的命令。你应该有'!'没有引用并用反斜杠逃脱它。您也可以从引号中取出#并将其转义,因为\短于两个引号。

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

答案 1 :(得分:0)

!可能会尝试替换您历史记录中的某些内容。试试...'#\!/bin/bash...