3 votes

comment échapper à la ligne shebang lors de la génération d'un shell script

Je génère un shell script à l'intérieur d'un script et il a besoin de permissions Root donc j'utilise

sudo bash -c "echo 'Hello There!' > '/var/www/cgi-bin/php-cgi-5.3.8'"

J'obtiens une erreur si j'essaie de sortir la ligne shebang et je ne sais pas comment l'échapper -- comme je le fais avec les autres variables.

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

Où est-ce que je me trompe ici ?

5voto

Paulpro Points 54844

! cherche une commande commençant par ' dans votre historique bash_history. Vous devriez avoir le '!' non cité et l'échapper avec un backslash. Vous pouvez aussi bien prendre le # entre guillemets et l'échappe également, puisqu'un fichier \ est plus court que deux guillemets.

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

0voto

gpojd Points 12043

En ! essaie probablement de remplacer par quelque chose dans votre historique. Essayez ...'#\!/bin/bash... .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X