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

ezr*_*tre 2 php bash shell

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

sudo bash -c "echo 'Hello There!' > '/var/www/cgi-bin/php-cgi-5.3.8'"
Run Code Online (Sandbox Code Playgroud)

如果我尝试输出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'"
Run Code Online (Sandbox Code Playgroud)

我在哪里错了?

Pau*_*aul 5

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

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'"
Run Code Online (Sandbox Code Playgroud)