Salut,
je veux créer un script linux qui prend en argument deux valeurs $1 et $1, ce script doit lancer gnuplot et tracer le point (x,y). ce que je veux réaliser en gros:
la première fois je lance par exemple :
./script.sh 2 3
./script.sh 3 4
je demande quoi écrire dans le script pour que quand je lance ces deux commandes par exemple je doit avoir une droite qui connecte (2,3)--->(3,4)
le problème que j ai , c'est que a chaque lancement une nouvelle fenêtre se lance, moi je veux tracer dans la même fenêtre ( la fenêtre dois que je la ferme manuellement)
besoin vraiment de votre aide
Merci d'avance
# Incohérence
Posté par Kerro . Évalué à 2.
Tu souhaites passer les coordonnées d'un seul point alors que tu veux tracer une droite. Je ne crois pas qu'un bon mathématicien soit capable de faire ça. Alors avec un simple script ça ne va pas être facile :-)
La solution est toute simple:
./script.sh 2 3 3 4
Après, je ne sais pas ce qui est dans ton script, mais là déjà tu as les deux points, donc possibilité de tracer une droite.
Tu as peut-être oublié de préciser que tu as un programme qui ne te fourni que 2 paramètres à la fois. Ou quelque chose du genre.
[^] # Re: Incohérence
Posté par Jean B . Évalué à 1.
Ensuite pour le contenu du script il faut réussir à communiquer avec gnuplot.
Je ne le connais pas du tout mais a ta place je regarderais du coté de DBUS/DCOP, ou des arguments de gnuplot.
Sinon peut être propager des messages systèmes qui simulerais des clicks, mais là ça deviens très tarabiscotté.
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
je vois que j'ai pas bien expliquer ce que je veux faire.
bon les arguments du script sont $1 qui est a chaque fois incrémenter de 1 ( automatiquement) et $2 qui est donné aléatoirement. bon si je lance par exemple ce scripte 100 fois je vais avoir 100 points . donc ce que je veux faire c'est de tracer le graphe qui passe par tous ces points !!!
les problèmes que j'ai : comment connecter ces points avec gnuplot ???
le 2 éme : je veux par exemple , si je lance ce script 100 fois , gnuplot me tracera ces 100 points (connecté) dans une seule fenêtre. (avec le programme que j'ai réalisé, si je lance 100 fois ce script , ja vais avoir 100 graphe , chaque graphe c'est que le point donné en argument!!!!)
j'éspère que j'ai bien expliquer mon problème
[^] # Re: Incohérence
Posté par Christophe --- . Évalué à 2.
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
Mais malheureusement j'ai pas bien compris le code. si tu peux m'aider plus ça va me faire un grand plaisir.
ou je peux utiliser les arguments!!! (x et y) .
et merci aussi de m'expliquer ce que cette instruction fait:
commande >> $MAFIFO
[^] # Re: Incohérence
Posté par Christophe --- . Évalué à 2.
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
Merci beaucoup Mensieur.Cristopher: le code Marche bien. mais j'ai eu un petit problème c'est que j'ai fermé la fenêtre manuellement et apres quand j'ai voulais lancer le script, rien ne s'affichera.
En gros, c'est ça le code que je cherche.
Merci beaucpoup une autre fois.
[^] # Re: Incohérence
Posté par Christophe --- . Évalué à 2.
Le problème est le suivant: quand tu ferme la fenêtre, c'est normal pour gnuplot, donc il ne fait rien, il ne préviens pas, il ne se termine pas. Donc, comme on ne peut pas savoir du côté du script que la fenêtre à été fermée, on ne peut pas réagir en conséquence.
Les seules solutions reposent sur du bricolage. Je fais quelques essais et je te tiens au courant.
[^] # Re: Incohérence
Posté par Christophe --- . Évalué à 2.
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
mais il y'a encore un petit problème, la fenêtre se ferme après 5ms!!
j'essaye de travailler avec un 3ème argument. qui prend 2 valeurs "oui" ou "non",
oui : ça veut dire c'est le dernier point a tracer dans la fenêtre ("donc la fenêtre(gnuplot) doit se fermer apres une seconde par exemple)
non: ça veut dire il y'a des autres points a ajouter a ce graphe ( et dans ce cas ton premier code fait le travail)
j'ai pas réussi encore a le faire, mais je crois que c'est une bonne méthode. Que dite vous Mr.Cristophe et Merci de m'aider encore une fois
[^] # Re: Incohérence
Posté par Christophe --- . Évalué à 2.
Il vaut vérifier que la commande xprop fonctionne, car c'est elle qui détecte que l'on a fermé la fenêtre. Pour cela, taper xprop -h dans un terminal devrais confirmer que c'est bon. S'il ne trouve pas la commande, cela vas être difficile.
j'essaye de travailler avec un 3ème argument. qui prend 2 valeurs "oui" ou "non",
oui : ça veut dire c'est le dernier point a tracer dans la fenêtre ("donc la fenêtre(gnuplot) doit se fermer apres une seconde par exemple)
il suffit de rajouter à la fin le code suivant:
if [ "$3" = "oui" ]; then
echo "quit" > $MAFIFO
fi
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
je vois que la solution c'est quand l'argument3 est "oui" il faut executer la commande
rm -f kapoueee, qd je le fait manuellement ça marche, qu'on je lance le script une nouvelle fois ça marche bien, mais quand j'ai rajouter cette commande au script, le message d'erreur suivant s'affiche : cat: kapoueee: Aucun fichier ou répertoire de ce type
voici le script :
MAFIFO=tube
if [ ! -p $MAFIFO ]; then
MAFENETRE="MOn Graphe"
r="countinue"
mkfifo $MAFIFO
(
while [ "$r" = "countinue" ]; do
cat $MAFIFO
done | gnuplot
) &
echo "set term x11 title '$MAFNETRE'" > $MAFIFO
echo "set multiplot" > $MAFIFO
echo "set xrange [0:4000]" > $MAFIFO
echo "set yrange [0:400]" > $MAFIFO
fi
echo "plot \"< echo $1 $2\" w p pt 2" >> $MAFIFO
if [ "$3" = "oui" ]; then
echo "quit" > $MAFIFO
r="nocountinue"
rm -f tube
fi
je demande pourquoi ce script ne marche pas "la commande rm -f tube" cause toujours un problème
[^] # Re: Incohérence
Posté par Christophe --- . Évalué à 2.
If a command is terminated by the control operator &, the shell executes the command in the background in a subshell.
Le subshell signifie qu'il a lancé un nouveau shell, donc la variable r n'est plus la même, donc changer sa valeur dans le premier shell ne sera pas vu dans le deuxième shell.
Si tu fais rm tube, tu détruit le "fichier", mais pas ce qui lis de l'autre côté. Si tu ne veux pas de problème, il faut faire:
echo "quit" > $MAFIFO ; sleep 1; echo "exit" > $MAFIFO
sleep 1; rm $MAFIFO
comme dans mon 2e exemple, pour n'éffacer le "fichier" que quand l'autre côté en a bien terminé avec.
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
maintenant ça marche bien,
Merci encore une autre fois...
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
Je vais vous deranger une autre fois Mr.Cristophe
est-ce que vous pouvez m'expliquer que fait cette commande exactement:
echo "plot \"< echo $1 $2\" w p pt 2" >> $MAFIFO
car je voulais supprimer le echo argment1 argument2 qui apparait dans le graphe, mais j'ai pas réussi...
[^] # Re: Incohérence
Posté par Christophe --- . Évalué à 2.
echo "unset key" > $MAFIFO
après le set yrange
[^] # Re: Incohérence
Posté par Anas3000 . Évalué à 1.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.