Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/01/2012, 11h51   #1
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 90
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 90
Points : 26
Points : 26
Par défaut Variable dans kdialog

Bonjour,

J'ai une variable $dde_kdialog, construite dans une boucle while.
Mon script est rédigé ainsi
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh
var="établissement"
lignes=$(grep -n -o -w "$var" temp)
echo "$lignes" > temp1
uniq -c temp1 > temp2
while read line
	do 
	line=${line%:*}
	ligne=${line#* } # numéro de ligne
	nb=${line% *} # nombre d'occurences dans la ligne
 		for (( j = 1 ; j <= $nb ; j++ ))
 		do
		nb_total=$[$nb_total+1] # nombre total d'occurences déjà traitées
 		dde_kdialog="$dde_kdialog $nb_total \"ligne $ligne - $j\" off"
 		done
	done < temp2
 
echo "#$dde_kdialog#"
kdialog --checklist "il y a $nb_total occurences de $var<br>Choisir celle qu'il faut retenir :" $dde_kdialog
Si je lance le script dans une console, j'obtiens cette réponse
Code :
1
2
[sam. 07 janvier (~) user] test                                                  
# 1 "ligne 13 - 1" off 2 "ligne 18 - 1" off 3 "ligne 20 - 1" off 4 "ligne 20 - 2" off 5 "ligne 20 - 3" off 6 "ligne 20 - 4" off 7 "ligne 21 - 1" off 8 "ligne 21 - 2" off 9 "ligne 23 - 1" off 10 "ligne 23 - 2" off 11 "ligne 23 - 3" off 12 "ligne 25 - 1" off 13 "ligne 25 - 2" off 14 "ligne 25 - 3" off 15 "ligne 25 - 4" off#
Mais la fenêtre kdialog qui s'ouvre ne correspond pas du tout à ce que j'attends

Par contre si je saisis la ligne qui s'affiche dans ma console dans mon presse-papier (entre les deux #), et que je la colle directement dans la console après avoir saisi le début de la commande :
Code :
[sam. 07 janvier (~) user] kdialog --checklist "il y a $nb_total occurences de $var<br>Choisir celle qu'il faut retenir :" 1 "ligne 13 - 1" off 2 "ligne 18 - 1" off 3 "ligne 20 - 1" off 4 "ligne 20 - 2" off 5 "ligne 20 - 3" off 6 "ligne 20 - 4" off 7 "ligne 21 - 1" off 8 "ligne 21 - 2" off 9 "ligne 23 - 1" off 10 "ligne 23 - 2" off 11 "ligne 23 - 3" off 12 "ligne 25 - 1" off 13 "ligne 25 - 2" off 14 "ligne 25 - 3" off 15 "ligne 25 - 4" off
alors, là, j'obtiens exactement ce que je veux


Donc ma variable est bien bâtie, non ?
NB dans mon script, j'ai essayé de mettre la variable entre guillemets "$dde_kdialot") et alors kdialog ne s'ouvre même pas. Si le la mets entre deux ´ (´$dde_kdialog´), j'ai le même résultat que sans rien (cf. image 1).

Que faire ?

Cordialement,
laloupiote est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 16h10   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh
var="établissement"
lignes=$(grep -n -o -w "$var" temp)
echo "$lignes" > temp1
uniq -c temp1 > temp2
while read line
	do 
	line=${line%:*}
	ligne=${line#* } # numéro de ligne
	nb=${line% *} # nombre d'occurences dans la ligne
 		for (( j = 1 ; j <= $nb ; j++ ))
 		do
		nb_total=$[$nb_total+1] # nombre total d'occurences déjà traitées
 		dde_kdialog="$dde_kdialog $nb_total \"ligne $ligne - $j\" off"
 		done
	done < temp2
 
echo "#$dde_kdialog#"
eval kdialog --checklist \"il y a $nb_total occurences de $var\<br\>Choisir celle qu\'il faut retenir :\" $dde_kdialog
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 16h41   #3
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 90
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 90
Points : 26
Points : 26
Ça le fait ! encore merci, c'est la troisième fois que tu me dépannes en 2 ou 3 jours. C'est sympa
laloupiote est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h36.


 
 
 
 
Partenaires

Hébergement Web