生成 shell 脚本时如何转义 shebang 线


how do you escape shebang line when generating a shell script

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

我哪里出错了?

!正在查找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'"

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