Zenity - Case =c3=a0 cocher et r=c3=a9cup=c3=a9ration de variable.
Le
G2PC

Bonjour, voilà une source " simple " dans le pastebin suivant.
Enregistrer le dans un fichier test.sh
Lancer avec sh test.sh
Zenity doit être installé.
https://pastebin.com/jrMnEJxs
J'ai le problème suivant :
Si je coche une seule case, alors, la valeur cochée est affichée
plusieurs fois dans le retour, lorsque j'écris les variables.
Si je coche deux cases, alors, seul les 2 valeurs cochées sont affichées
( comportement correct attendu ).
J'aimerais enfin, dans le meilleur des cas, récupérer les variables,
pour faire un INPUT vers une base de données.
Merci de vos avis.
Enregistrer le dans un fichier test.sh
Lancer avec sh test.sh
Zenity doit être installé.
https://pastebin.com/jrMnEJxs
J'ai le problème suivant :
Si je coche une seule case, alors, la valeur cochée est affichée
plusieurs fois dans le retour, lorsque j'écris les variables.
Si je coche deux cases, alors, seul les 2 valeurs cochées sont affichées
( comportement correct attendu ).
J'aimerais enfin, dans le meilleur des cas, récupérer les variables,
pour faire un INPUT vers une base de données.
Merci de vos avis.
Je reviens à un autre fonctionnement que j'avais déjà vu précédemment.
Peut être que je dois plutôt faire comme cela :
pays=$(zenity
--list
--checklist
--width="360"
--height="420"
--title="Raison sociale de l'entreprise."
--text "Raison sociale de l'entreprise."
--separator=":"
--column "Sélectionner"
--column "Pays"
FALSE TP_Allemagne
FALSE TP_Autriche
FALSE TP_Angleterre
FALSE TP_Belgique
FALSE TP_Bulgarie
FALSE TP_Chypre
FALSE TP_Croatie
FALSE TP_Danemark
FALSE TP_Ecosse
FALSE TP_Espagne
FALSE TP_Estonie
FALSE TP_Finlande
FALSE TP_France
FALSE TP_Grece
FALSE TP_Hongrie
FALSE TP_Irlande
FALSE TP_Irlande_de_Nord
FALSE TP_Italie
FALSE TP_Lettonie
FALSE TP_Lituanie
FALSE TP_Luxembourg
FALSE TP_Malte
FALSE TP_PaysBas
FALSE TP_Pays_de_Galles
FALSE TP_Pologne
FALSE TP_Portugal
FALSE TP_Republique_Tcheque
FALSE TP_Roumanie
FALSE TP_Slovaquie
FALSE TP_Slovenie
FALSE TP_Suede
FALSE TP_Suisse
FALSE TP_OTHER)
# On récupère les valeurs cochées dans la liste de choix des pays :
echo $pays
Ici, plus de redondance dans la liste des valeurs cochées.
Si je coche un seul choix, un seul choix est affiché en sortie.
Si je coche plusieurs choix, plusieurs choix sont affichés en sortie. (
TP_Allemagne:TP_Ecosse:TP_France )
Maintenant, comment exploiter la chaîne, pour séparer les valeurs
obtenues, pour les stocker dans plusieurs variables, pour les exploiter
dans une requête SQL ?
J'avance pour tenter de récupérer les multiples choix cochés.
En sh, j'ai trouvé cela, mais, pas très propre, car, la chaine est
réécrite à chaque recherche de valeur, dans le terminal. ( 33 valeurs de
pays à tester. )
#sh
echo "$pays" | grep TP_Allemagne && echo Allemagne || echo ko
echo "$pays" | grep TP_Angleterre && echo Angleterre || echo ko
Avec Bash, ça correspond parfaitement à mes attentes. Je peux tester une
valeur dans la chaine, je peux faire un echo de la valeur ( ou lancer
une commande SQL je suppose. )
#bash OK
All="TP_Allemagne"
[[ $pays =~ $All ]] && echo Allemagne || echo ko Allemagne
Ang="TP_Angleterre"
[[ $pays =~ $Ang ]] && echo Angleterre || echo ko Angleterre
J'aimerais encore, si possible, avoir l'équivalent, pour shell.
# Tester si les valeurs cochées dans la liste de choix des pays se
retrouvent dans la chaîne de retour :
# sh
echo "$pays" | grep TP_Allemagne && echo OK || echo "Pas OK"
# sh
if echo "$pays" | grep "TP_Allemagne" >/dev/null 2>&1; then echo "OK";
else echo "Pas OK"; fi
# bash
All="TP_Allemagne" [[ $pays =~ $All ]] && echo OK || echo Pas OK
# bash
[[ $(grep "TP_Allemagne" <<<$pays) ]] && echo OK