Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/04/2012, à 12:12

sun400

Exectuer une commande dans un fichier bash

Bonjour,
Après quelques recherche sur le forum j'ai découvert la commandes xte 'mousermove x x' qui permet de déplacer sa souris.
Dans une console cela marche parfaitement, en revanche je n'arrive pas à le faire fonctionner dans un fichier .sh.
J'ai une variable qui contient la commande:

retour="xte 'mousermove 400 0' "

Lorsque j'exécute la variable:

Unknown command ''mousermove'
Unknown command '400'
Unknown command '0''

Code utilisé:

`$retour &`

Je ne trouve pas la solution à ce souci, je vous remercie pour votre aide.

Hors ligne

#2 Le 15/04/2012, à 13:05

credenhill

Re : Exectuer une commande dans un fichier bash

hello
pas besoin de ``

$ x="date +%D-%T"
$ $x
04/15/12-13:04:13
$ 

Hors ligne

#3 Le 15/04/2012, à 13:17

sun400

Re : Exectuer une commande dans un fichier bash

Cela marche très bien avec la commande date mais pas avec

y="xte 'mousermove 400 0'"
$y

Je pense que les ' ' y sont pour quelque chose.

Hors ligne

#4 Le 15/04/2012, à 13:56

pingouinux

Re : Exectuer une commande dans un fichier bash

Bonjour,
Je n'ai pas trop compris pourquoi, mais ceci devrait marcher :

eval $y

J'ai testé avec date :

$ z="date +'%Y %m'"

$ $z
date: extra operand `%m\''
Try `date --help' for more information.

$ eval $z
2012 04

Hors ligne

#5 Le 15/04/2012, à 14:00

sun400

Re : Exectuer une commande dans un fichier bash

En effet ca marche !
Je ne connaissais pas cette commande, merci.

Hors ligne

#6 Le 15/04/2012, à 14:31

Watael

Re : Exectuer une commande dans un fichier bash

salut,

eval c'est mal ! utilisez une fonction, même pour une petite commande comme ça !


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 16/04/2012, à 00:12

Postmortem

Re : Exectuer une commande dans un fichier bash

Salut,

pingouinux a écrit :

Bonjour,
Je n'ai pas trop compris pourquoi, mais ceci devrait marcher :

eval $y

J'ai testé avec date :

$ z="date +'%Y %m'"

$ $z
date: extra operand `%m\''
Try `date --help' for more information.

$ eval $z
2012 04

Je pense que ça ne fonctionne pas car les simples quotes sont le résultat d'une substitution, elles perdent donc leur signification particulière. Du coup, la commande date, lancée sans eval, voit 2 arguments : +'%Y et %m'

Watael a écrit :

eval c'est mal ! utilisez une fonction, même pour une petite commande comme ça !

Si on maitrise le contenu de la variable, c'est quand meme pratique.


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#8 Le 16/04/2012, à 02:16

Watael

Re : Exectuer une commande dans un fichier bash

traverser la rue n'importe où, c'est pratique.
emprunter les passages protégés, c'est sans risque.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 16/04/2012, à 07:34

pingouinux

Re : Exectuer une commande dans un fichier bash

Merci pour tes explications Postmortem #7. Je voyais bien que c'était quelque chose comme ça, mais je suis toujours obligé de tâtonner pour ce genre de trucs.

Hors ligne

#10 Le 16/04/2012, à 09:45

Postmortem

Re : Exectuer une commande dans un fichier bash

Watael a écrit :

traverser la rue n'importe où, c'est pratique.
emprunter les passages protégés, c'est sans risque.

Autant utiliser eval pour déclarer des variables, j'ai bien compris le risque :

eval $toto=$tata

L'explication ici. L'affectation de variable qu'on souhaite peut se transformer en une commande qui est éxécutée.

Mais dans le cas présent, je ne vois pas le problème, on veut exécuter la commande.
S'il n'y avait pas eu les quotes dans la commande, celle-ci se serait éxécutée correctement, même sans mettre eval devant. C'est surtout ça le danger à mon avis.

Puis un passage piéton n'empèche pas de se faire renverser !

Dernière modification par Postmortem (Le 16/04/2012, à 09:49)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#11 Le 16/04/2012, à 10:21

Watael

Re : Exectuer une commande dans un fichier bash

quand je demande mon chemin, j'espère que la personne qui me répond m'indique un chemin court, qui ne me fera pas prendre de risques inutiles.

le problème de conseiller `eval', est le même que d'utiliser `ls' dans des exemples de "parsing" : le néophyte peut croire que c'est le comportement ordinaire à adopter, ce qu'on peut faire de mieux dans cette circonstance.
`eval' est à conseiller en dernier recours.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne