3

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

我在哪里错了?

4

2 回答 2

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'"
于 2012-05-07T16:23:53.993 回答
0

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

于 2012-05-07T16:22:41.230 回答