IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Variable dans kdialog


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 119
    Points : 73
    Points
    73
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    [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,

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 119
    Points : 73
    Points
    73
    Par défaut
    Ça le fait ! encore merci, c'est la troisième fois que tu me dépannes en 2 ou 3 jours. C'est sympa

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/01/2004, 15h14
  2. [LG]variables dans procédure
    Par néo333 dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2003, 23h24
  3. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40
  4. Réponses: 13
    Dernier message: 14/06/2003, 22h15
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo