#1 Le 05/01/2012, à 01:55
- cristobal78
(résolu) 1seule commande zenity pour faire 1 variable contenant 2 info
Bonsoir à tous
J'ai découvert zenity depuis peu et plus ça va plus j'aime.
Je suis en train de reprendre mes anciens petits scripts un peu lourdauds pour les alléger et les moderniser grâce à zenity.
Je bute cependant sur ce point : je voudrais écrire une commande zenity qui me donne en retour une variable contenant 2 info.
Par exemple quelque chose qui ressemblerait à :
variable_2_info=$(zenity --column="nom" --column="prénom" "Durand" "jacques" "Dupont" "Pierre")
et qu'ensuite, après avoir coché la ligne voulue dans la boite de dialogue, j'ai :
~$ echo $variable_2_info
Dupont Pierre
J'ai mes 2 info "Dupont" et "Pierre" séparées par un espace.
Ça c'était les grandes lignes pour expliquer mon pb.
En pratique je voudrais sélectionner l'un quelconque de mes 3 pc (tous derrière un routeur) dans une boite de dialogue zenity et récupérer d'un coup à la fois son ip ET son nom de machine dans une SEULE variable.
Pour ça j'ai essayé la ligne de commande suivante :
PC_info=`zenity --list --title="Choix du pc" --column="adresse ip" --column="nom du pc" 192.168.0.11 "Toshiba_Laptop" 192.168.0.12 "Dell" 192.168.0.13 "Old_PC"`
Ça marche À MOITIÉ car dans la variable PC_info ainsi crée je ne récupère que la valeur de l'ip :
~$ echo $PC_info
192.168.0.12
Apparemment on ne récupère avec cette commande que la variable située dans la 1-ère colonne (ici l'adresse ip)
Moi je voudrais, avec une ligne du même type, récupérer dans ma variable nommée "PC_info" :
- son adresse ip, par exemple 192.168.0.11
ET
- le nom en clair du PC, par exemple "Toshiba_Laptop"
et qu'en faisant :
~$ echo $PC_info
j'obtienne :
192.168.0.11 Toshiba_Laptop
Question
Y a t il moyen de récupérer 2 valeurs alpha numériques telles que "192.168.0.11" et "Toshiba_Laptop" dans une seule variable avec une seule commande zenity ?
a+
Dernière modification par cristobal78 (Le 08/01/2012, à 01:58)
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne
#2 Le 05/01/2012, à 02:08
- AnsuzPeorth
Re : (résolu) 1seule commande zenity pour faire 1 variable contenant 2 info
Bjr,
extrait du man zenity
--print-column=NUMBER
Specify what column to print to standard output. The default is
to return the first column. 'ALL' may be used to print all col‐
umns.
pour changer le caractère de séparation:
--separator=STRING
Set output separator character
Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script (Hors ligne)
Hors ligne
#3 Le 05/01/2012, à 02:15
- sputnick
Re : (résolu) 1seule commande zenity pour faire 1 variable contenant 2 info
Pour la deuxieme question :
tab=( "192.168.0.11 Toshiba_Laptop" "192.168.0.12 Dell" "192.168.0.13 Old_PC" )
var=$(
zenity --list --title="Choix du pc" --column="Num" --column="adresse ip" --column="nom du pc" $(
for i in ${!tab[@]}; do echo -en "$i ${tab[i]% *} ${tab[i]#* } "; done
)
)
echo ${tab[var]}
Pour la première question, c'est la même chose, il faut utiliser un tableau comme je l'ai fait, je te laisse faire pour que tu apprenne
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#4 Le 05/01/2012, à 03:19
- cristobal78
Re : (résolu) 1seule commande zenity pour faire 1 variable contenant 2 info
merci à tous les 2 pour vos réponses rapides.
J'ai testé celle de AnsuzPeorth avec --print-column=1 puis avec 2 puis avec ALL.
Comme il n'y a que 2 colonnes l'option ALL me convient. :):) et je peux la mettre en oeuvre tout de suite.
Question subsidiaire :
Comment aurait il fallu faire si par ex. il y avait eu 5 colonnes et que je veuille récupérer les valeurs des col no. 1 3 et 5 ? Il aurait fallu mettre 3 fois --print-column=nombre ???
Il est un peu tard pour regarder la proposition de sputnick car là il semble qu'il faille réfléchir nettement plus pour la comprendre. Je regarderai demain !
a+
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne
#5 Le 05/01/2012, à 03:22
- Hizoka
Re : (résolu) 1seule commande zenity pour faire 1 variable contenant 2 info
exemple :
zenity --list \
--separator=" " \
--column="Adresse IP" \
--column="Nom du PC" \
--print-column="1,2" \
192.168.0.11 "Toshiba_Laptop" 192.168.0.12 "Dell" 192.168.0.13 "Old_PC"
=> 192.168.0.12 Dell
je te conseille de jeter un oeil dans ma signature à Générateur de fenêtres Zenity ...
ca devrait bien t'aider (le code a était fait en 1 minute...).
EDIT
Comment aurait il fallu faire si par ex. il y avait eu 5 colonnes et que je veuille récupérer les valeurs des col no. 1 3 et 5 ? Il aurait fallu mettre 3 fois --print-column=nombre ???
comme tu peux le voir dans mon code :
--print-column="1,3,5"
Dernière modification par Hizoka (Le 05/01/2012, à 03:24)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#6 Le 08/01/2012, à 01:57
- cristobal78
Re : (résolu) 1seule commande zenity pour faire 1 variable contenant 2 info
merci à tous, vous êtes trop forts
Vraiment bien cette option --print-column= .....
Je ne l'avais pas comprise lors de ma lecture du man zenity.
J'ai mis (résolu) dans mon post #1
-----------------------------------------------------------------------------------------------------------------------
remarque
Pas terrible de devoir mettre (résolu) qui bouffe 8 caractères alors que le nombre de caractères est déjà trop limité pour pouvoir annoncer clairement son Pb.
Les maitres de ce site devraient vraiment remplacer ce (résolu) par un simple (ok) qui économiserait 4 caractères pour dire la même chose.
a+
Dernière modification par cristobal78 (Le 08/01/2012, à 02:03)
Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE
Hors ligne