我正在脚本中生成一个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'"
我在哪里错了?
答案 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...
。