Contenu | Rechercher | Menus

Annonce

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.

À propos de l'équipe du forum.

#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. smile
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. hmm

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. smile:):) 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 smile smile smile

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. roll

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