#1 Le 04/04/2020, à 12:26
- gigiair
[Résolu] script pour lancer une commande sur une url
J'ai besoin de votre aide, je voudrais écrire un script qui exécute une commande du genre
emacsclient -e '(eww "https://forum.ubuntu-fr.org/search.php?search_id=136198599")'
avec l'url en paramètre variable
J'ai composé un petit script dont la commande est
exec echo emacsclient -e \'\(eww \"$1\"\)\'
Qui avec l'argument https://forum.ubuntu-fr.org/post.php?fid=78
me renvoie
emacsclient -e '(eww "https://forum.ubuntu-fr.org/post.php?fid=78")'
Commande qui, copiée littéralement, exécute bien ce que je désire.
(Pour votre information, ça lance eww ,un browser en mode texte d'Emacs en mode serveur, sur l'url précisée.)
Seulement voilà, si j'enlève le echo dans le script, j'ai le message d'erreur
*ERROR*: End of file during parsing
Comme vous pouvez le constater, je suis plutôt débutant en bash.
Dernière modification par gigiair (Le 04/04/2020, à 16:12)
--
JJR.
Hors ligne
#2 Le 04/04/2020, à 13:38
- kamaris
Re : [Résolu] script pour lancer une commande sur une url
Je ne connais pas emacsclient, donc je ne sais pas si la syntaxe de ce que tu lui passes à exécuter par l'option -e est correcte, mais pour ce qui est du bash, le exec est inutile, et tu dois pouvoir mettre dans ton script
emacsclient -e "(eww '$1')"
Hors ligne
#3 Le 04/04/2020, à 14:13
- gigiair
Re : [Résolu] script pour lancer une commande sur une url
ça n'a pas d'importance si tu ne connaisse pas emacsclient
la commande
emacs -q --eval '(eww "https://forum.ubuntu-fr.org/search.php?search_id=136198599")'
a un efffet équivalent à
emacsclient -e '(eww "https://forum.ubuntu-fr.org/search.php?search_id=136198599")'
mais le temps de lancement d'Emacs peut être beaucoup plus long, surtout sans l'option -q . Quand il n'y a pas d'Emacs lancé en mode serveur c'est cette dernière commande qui doit être lancée. Mon script prévoira ce cas, mais pour l'instant ce n'est pas le sujet.
Je penche pour un problème de caractère devant être ou non protégés, mais je suis un peu sec sur ce sujet en bash.
--
JJR.
Hors ligne
#4 Le 04/04/2020, à 14:15
- kamaris
Re : [Résolu] script pour lancer une commande sur une url
As-tu essayé la commande donnée en #2 ?
Hors ligne
#5 Le 04/04/2020, à 14:33
- gigiair
Re : [Résolu] script pour lancer une commande sur une url
As-tu essayé la commande donnée en #2 ?
Oui, bien sûr, c'est même par là que j'ai commencé puis j'ai précédé la commande d'un 'echo' pour vérifier que la commande envoyée était bonne, puis j'ai ajouté un exec sans que ça ne produise aucun changement
~/bin $
~/bin $ # avec echo pour tester la commande envoyée
~/bin $ ./ewwclient.sh https://forum.ubuntu-fr.org/search.php?search_id=136198599
emacsclient -e '(eww "https://forum.ubuntu-fr.org/search.php?search_id=136198599")'
~/bin $ # sans echo
~/bin $ ./ewwclient.sh https://forum.ubuntu-fr.org/search.php?search_id=136198599
*ERROR*: End of file during parsing
~/bin $
--
JJR.
Hors ligne
#6 Le 04/04/2020, à 14:46
- kamaris
Re : [Résolu] script pour lancer une commande sur une url
Non, je te parle de la commande que j'ai donnée dans mon post #2 :
emacsclient -e "(eww '$1')"
L'usage des guillemets y est différent de celui que tu fais (les guillemets simples dans les guillemets doubles, et pas l'inverse).
Tu peux aussi mettre
#!/bin/bash -x
au début de ton script, pour avoir un traçage de ce qui est effectivement exécuté.
Hors ligne
#7 Le 04/04/2020, à 16:10
- gigiair
Re : [Résolu] script pour lancer une commande sur une url
J'ai fini par trouver, grâce à toi.
l'url de la commande doit être quotée avec des doubles, donc la commande qui va bien, c'est
emacsclient -e "(eww \"$1\")"
Merci.
Dernière modification par gigiair (Le 04/04/2020, à 21:35)
--
JJR.
Hors ligne