Dialog et checklist de longueur variable
Résolu/Fermé
johan78125
-
11 mars 2009 à 22:20
linuxnico Messages postés 204 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 8 octobre 2010 - 13 mars 2009 à 07:57
linuxnico Messages postés 204 Date d'inscription vendredi 1 février 2008 Statut Membre Dernière intervention 8 octobre 2010 - 13 mars 2009 à 07:57
A voir également:
- Dialog et checklist de longueur variable
- Vba range avec variable ✓ - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Mesurer longueur avec telephone - Guide
- Impossible de créer le fichier de travail.verifiez variable TEM ✓ - Forum Word
3 réponses
linuxnico
Messages postés
204
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
8 octobre 2010
10
12 mars 2009 à 09:03
12 mars 2009 à 09:03
que donne
echo ${champs[@]}
ou plutot que contient reelement apres le dialog champs[]??
echo ${champs[@]}
ou plutot que contient reelement apres le dialog champs[]??
Bonjour,
ici echo ${champs[@]} me renvoie la totalité de la table champs[ ] formaté pour la commande dialog.
# echo ${champs[@]}
"root" "0 - " off "daemon" "1 - " off "bin" "2 - " off "sys" "3 - " off ...........
Mais après réflexion je suis parti sur une autre piste.
En effet ma boucle while est vraiment sous optimale... si j'ai 30 groupes, ça fait :
/etc/group lu 91 fois, et 540 forks !!!
Donc avec un peu de recherche j'ai abouti à ceci:
##### MON CODE ######
eval $(echo -en "$DIALOG --backtitle \"$backtitle\" \
--title \"Suppression de groupes\" \
--ok-label \"Valider\" \
--cancel-label \"Retour\" \
--checklist \"Cochez les groupes que vous souhaitez supprimer.\n\n groupe gid - utilisateur(s)\" 18 60 10 "
savIFS="$IFS"
IFS=":"
while read group x gid users ; do
echo -en "\"$group\" \"$gid - $users\" off "
done < $fichierEtcGroup
IFS="$savIFS") 2> $fichierTemp
##### FIN MON CODE ######
J'y trouve deux avantages:
- Je liste /etc/group et formate ma sortie en une seule passe (pas des moins intéressant)
- Ma commande dialog est formaté correctement et ne se plein plus ;-)
Merci de vous être intéressée à mon problème.
A bientôt je l'espère.
ici echo ${champs[@]} me renvoie la totalité de la table champs[ ] formaté pour la commande dialog.
# echo ${champs[@]}
"root" "0 - " off "daemon" "1 - " off "bin" "2 - " off "sys" "3 - " off ...........
Mais après réflexion je suis parti sur une autre piste.
En effet ma boucle while est vraiment sous optimale... si j'ai 30 groupes, ça fait :
/etc/group lu 91 fois, et 540 forks !!!
Donc avec un peu de recherche j'ai abouti à ceci:
##### MON CODE ######
eval $(echo -en "$DIALOG --backtitle \"$backtitle\" \
--title \"Suppression de groupes\" \
--ok-label \"Valider\" \
--cancel-label \"Retour\" \
--checklist \"Cochez les groupes que vous souhaitez supprimer.\n\n groupe gid - utilisateur(s)\" 18 60 10 "
savIFS="$IFS"
IFS=":"
while read group x gid users ; do
echo -en "\"$group\" \"$gid - $users\" off "
done < $fichierEtcGroup
IFS="$savIFS") 2> $fichierTemp
##### FIN MON CODE ######
J'y trouve deux avantages:
- Je liste /etc/group et formate ma sortie en une seule passe (pas des moins intéressant)
- Ma commande dialog est formaté correctement et ne se plein plus ;-)
Merci de vous être intéressée à mon problème.
A bientôt je l'espère.
linuxnico
Messages postés
204
Date d'inscription
vendredi 1 février 2008
Statut
Membre
Dernière intervention
8 octobre 2010
10
13 mars 2009 à 07:57
13 mars 2009 à 07:57
ah ben parfait!!!
t'est une bete!
ps: j'espere ne pas te voir "bientot" comme tu le dit, cela voudrait dire que tu a encore des soucis!! ;-)
t'est une bete!
ps: j'espere ne pas te voir "bientot" comme tu le dit, cela voudrait dire que tu a encore des soucis!! ;-)