Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

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.

#1 Le 15/11/2013, à 17: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, à 22:45)

Hors ligne

#2 Le 15/11/2013, à 22: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

Hors ligne

#3 Le 15/11/2013, à 22: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, à 22: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.

Hors ligne

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

popol06

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

Super, fonctionne aussi merci

Hors ligne