Bonjour,
Je suis confronté à un problème récurrent dont je n'arrive pas à trouver la solution.
L'idée est, dans un environnement bash (sur Ubuntu 18 #46~18.04.1), d'envoyer des commandes via des variables d'environnement (je sais, c'est une drôle d'idée
). Le but est d'afficher la commande puis le résultat.
En gros, le script, qu'on appellera mon_script.sh, contient ça :
1 2 3
| # mon_script.sh
echo "Nous allons exécuter la commande suivante : ${COMMAND}"
${COMMAND} |
En soi, ça ne parait pas sorcier.
Par exemple, si la commande consiste à chercher le texte "super" dans toto.txt (qui contient une ligne "c'est super chouette"), ça donnera ça :
1 2
| export COMMAND="grep super toto.txt"
./mon_script.sh |
et la sortie doit donner ça :
1 2
| Nous allons exécuter la commande suivante : grep Super toto.txt
C'est super chouette |
Là où ça se gâte, c'est si je veux chercher la chaîne "super chouette". J'aurais tendance à faire ça :
export COMMAND="grep \"super chouette\" toto.txt"
avec les \" pour indiquer que c'est bien le caractère guillemet que je veux
ou alors ça
export COMMAND="grep 'super chouette' toto.txt"
avec les simples guillemets autour de la chaîne cherchée.
Mais, dans les deux cas, alors que la syntaxe donne ce que je veux dans le terminal, la sortie via mon_script.sh donne alors ça :
1 2
| Nous allons exécuter la commande suivante : grep "super chouette" toto.txt
grep chouette" : No such file or directory |
Si j'utilise des guillemets simples
export COMMAND="grep 'super chouette' toto.txt"
alors j'ai ça:
1 2
| Nous allons exécuter la commande suivante : grep 'super chouette' toto.txt
grep chouette' : No such file or directory |
Si directement dans la fenêtre je fais
grep super\ chouette toto.txt
ça marche.
Par contre, avec
export COMMAND="grep super\\ chouette toto.txt"
j'ai cette fois ça :
1 2
| Nous allons exécuter la commande suivante : grep super\ chouette toto.txt
grep: Trailing backslash |
Bref, c'est à devenir fou
.
Et je ne parle même pas d'un pipe dans la commande ou d'une redirection, j'ai l'impression que ce n'est même pas la peine d'y penser.
Auriez-vous une petite idée pour me sortir du pétrin ?
Merci d'avance.
Partager