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 POSIX Discussion :

Récupérer la valeur après le signe égal


Sujet :

Shell et commandes POSIX

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Récupérer la valeur après le signe égal
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    wsconsctl | grep -w "keyboard1.bell.volume=*"
    keyboard1.bell.volume=50
    keyboard1.bell.volume.default=50
    Je souhaite récupérer uniquement la valeur 50 de la première ligne afin d'effectuer des tests. La seconde ligne n'est pas nécessaire.

    Je ne parviens pas à trouver un exemple qui pourrait m'aiguiller.

    Pourriez-vous me donner un petit coup de main s'il vous plaît ?

    En vous remerciant par avance de vos réponses.
    .Olivier

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 722
    Points
    12 722
    Par défaut
    Bonjour,

    Tu es sous quel BSD ?

    Si tu es sous FreeBSD, tu peux directement faire quelque chose comme (d'après le man) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wsconsctl -n keyboard1.bell.volume
    Cordialement.

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bon je vais me coucher

    Je suis sous OpenBSD et tu as raison, cela me donne bien la valeur souhaitée.

    Je souhaiterai tout de même avoir un avis sur ma fonction qui permet de désactiver le beep du clavier USB.
    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
    disable_usb_keyboard_beep() {
       ukeyb=`usbdevs | grep -w "USB Keyboard" | wc -l`
       if [ "$ukeyb" -eq 0 ]; then
           echo "*** ERROR: No USB keyboard detected!"
       return 1
       if
       vbell=`doas wsconsctl -n keyboard1.bell.volume`
       if [ "$vbell" -eq 50 ]; then
           doas wsconsctl -f /dev/wskbd1 >/dev/null 2>&1 keyboard1.bell.volume=0
           echo "*** SUCCESS: keyboard beep has been disabled."
           return 0
      fi
      if [ "$vbell" -eq 0 ]; then
          echo "*** WARNING: keyboard beep has already been disabled."
      fi
    }
    Même si elle fonctionne correctement, est-il possible de l'optimiser ?

    Merki
    .Olivier

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    Bonjour,

    il y a, au milieu de la fonction, un if tout seul, sans then et sans fi.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Olivier Regnier Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    wsconsctl | grep -w "keyboard1.bell.volume=*"
    keyboard1.bell.volume=50
    keyboard1.bell.volume.default=50
    Je souhaite récupérer uniquement la valeur 50 de la première ligne afin d'effectuer des tests. La seconde ligne n'est pas nécessaire.
    La réponse de disedorgue est bien évidemment la meilleure.

    Maintenant, si tu veux progresser en expressions régulières et savoir pourquoi ton "grep" te retourne 2 lignes et non une seule, tu dois comprendre que le grep "keyboard1.bell.volume=*" retourne toutes les lignes qui contiennent la chaine "keyboard1.bell.volume" suivie d'un nombre quelconque de "=" (qui est la signification de "=*") et retourne donc les 2 lignes.
    Manifestement tu voulais récupérer l'unique ligne contenant la chaine "keyboard1.bell.volume" suivie du signe "=" suivie de n'importe quoi, ce que tu aurais pu obtenir avec grep "keyboard1.bell.volume=.*" ou plus simplement grep "keyboard1.bell.volume=".

    PS: je ne comprends pas très bien le fonctionnement de l'option -w qui ne semble pas donner les mêmes résultats que toi (je suis sous macos)

  6. #6
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je reviens vers cette discussion pour indiquer que le script fonctionne parfaitement via la fonction suivante:
    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
    disable_keybeep() {   
      ukeyb=`usbdevs | grep -w "USB Keyboard" | wc -l`
      if [ "$ukeyb" -eq 0 ]; then
          echo "›› No device configured!"
          return 1
      fi
      vbell=`doas wsconsctl -n keyboard1.bell.volume`
      if [ "$vbell" -eq 50 ]; then
          doas wsconsctl -f /dev/wskbd1 › /dev/null 2&1 keyboard1.bell.volume=0
          if [ $? -eq 0 ]; then
              echo "›› Keyboard beep disabled."
          else
              echo "›› Unable to disable keyboard beep!"
          fi
      else
          echo "›› Keyboard beep already disabled!"
      fi
     }
    .Olivier

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/03/2009, 15h20
  2. [MySQL] Récupérer la valeur d'un champ d'une table juste après l'avoir inséré
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/05/2007, 22h24
  3. Récupérer Element d'après valeur attribut
    Par wwave dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/03/2007, 15h53
  4. Réponses: 3
    Dernier message: 16/02/2007, 11h42
  5. Récupérer la valeur du bouton Submit après un contrôle en js
    Par DadaWeb dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 18/01/2006, 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