Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 15/11/2013, à 16:04

popol06

[Résolu] yad et récupérationde variable

Bonjour,

J'ai un soucis où je m'arrache les cheveux, voici un script, réalisé avec yad (installé via le ppa) et testé aussi en version 0.24 sur une archlinux.

#!/bin/bash
while true
do
action=$(yad --mouse --title="Actions" --form \
	--field="Server1:CB" "Action1!Action2!Action3!Action4" \
	--field="Server2:CB" "Action1!Action2!Action3!Action4" \
	--field="Server3:CB" "Action1!Action2!Action3!Action4" \
	--field="Server4:CB" "Action1!Action2!Action3!Action4" \
	--button="Retour:0" \
	--button="Quitter:1" \
	--button="Server1:2" \
	--button="Server2:3" \
	--button="Server3:4" \
	--button="Server4:5")
		case $? in
			0)
				break;;
			1)
				exit;;
			2)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 1)) "for server1";;
			3)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 2)) "for server2";;
			4)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 3)) "for server3";;
			5)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 4)) "for server4";;
		esac
done

ce qui donne ceci :
44982887ok.png

Comme on peut le voir dans le "case", si je clique sur un des bouton "Server", ça doit afficher la variable "action" et dans un deuxieme temps, un petit coup de cut pour prendre ce que je souhaite.
Tout fonctionne impeccable avec les boutons "Server1" et "Server3", mais la variable "action" reste désespérément vide en cliquant sur les boutons "Server2" et "Server4".... comprends pas....
exemple en cliquant sur "Server1" on obtient :

Action1|Action1|Action1|Action1|
Action1 for server1

ce qui est normal
Par contre "Server2", on a :

for server2

là pas normal
je sèche, est-ce que je loupe un truc....

Dernière modification par popol06 (Le 15/11/2013, à 21:45)

Hors ligne

#2 Le 15/11/2013, à 21:34

metalux

Re : [Résolu] yad et récupérationde variable

Bonsoir, aucune idée de la raison mais le code suivant semble fonctionner:

#!/bin/bash
while true
do
action=$(yad --mouse --title="Actions" --form \
	--field="Server1:CB" "Action1!Action2!Action3!Action4" \
	--field="Server2:CB" "Action1!Action2!Action3!Action4" \
	--field="Server3:CB" "Action1!Action2!Action3!Action4" \
	--field="Server4:CB" "Action1!Action2!Action3!Action4" \
	--button="Retour:0" \
	--button="Quitter:1" \
	--button="Server1:2" \
	--button="Server2:4" \
	--button="Server3:6" \
	--button="Server4:8")
		case $? in
			0)
				break;;
			1)
				exit;;
			2)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 1)) "for server1";;
			4)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 2)) "for server2";;
			6)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 3)) "for server3";;
			8)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 4)) "for server4";;
		esac
done

Xubuntu 14.04 LTS sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Voyager 13.04 mise à niveau en 14.04 sur TOSHIBA  Satellite C870-196.
Faîtes la mise à jour de vos P.P.A. automatiquement

Hors ligne

#3 Le 15/11/2013, à 21:45

popol06

Re : [Résolu] yad et récupérationde variable

Effectivement merci, ça fonctionne comme ceci, l'erruer doit être de l'ordre du bug.... ou bien autre chose qui me dépasse, en tout cas merci je vais continuer avec ça...!

Hors ligne

#4 Le 15/11/2013, à 21:56

metalux

Re : [Résolu] yad et récupérationde variable

J'ai trouvé autre chose dans le man:
il te manque l'option  --always-print-result

#!/bin/bash
while true
do
action=$(yad --mouse --always-print-result title="Actions" --form \
	--field="Server1:CB" "Action1!Action2!Action3!Action4" \
	--field="Server2:CB" "Action1!Action2!Action3!Action4" \
	--field="Server3:CB" "Action1!Action2!Action3!Action4" \
	--field="Server4:CB" "Action1!Action2!Action3!Action4" \
	--button="Retour:0" \
	--button="Quitter:1" \
	--button="Server1:2" \
	--button="Server2:3" \
	--button="Server3:4" \
	--button="Server4:5")
		case $? in
			0)
				break;;
			1)
				exit;;
			2)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 1)) "for server1";;
			3)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 2)) "for server2";;
			4)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 3)) "for server3";;
			5)
				echo "$action"
				echo $(echo $(echo "$action" | cut -d\| -f 4)) "for server4";;
		esac
done

Et sur cette page
by default yad prints result only for buttons with even return codes. for changing this behavior add --always-print-result option or use only evens return codes
Pas tout compris mais ça semble être en rapport.


Xubuntu 14.04 LTS sur HP Pavilion t728.fr
Precise Pangolin 64 bits sur Acer aspire 5738ZG
Voyager 13.04 mise à niveau en 14.04 sur TOSHIBA  Satellite C870-196.
Faîtes la mise à jour de vos P.P.A. automatiquement

Hors ligne

#5 Le 18/11/2013, à 11:41

popol06

Re : [Résolu] yad et récupérationde variable

Super, fonctionne aussi merci

Hors ligne

Haut de page ↑