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 :

redirection >&2


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut redirection >&2
    in Tester le contenu d'une variable
    Citation Envoyé par BEEP-BEEP
    Du coup, je pense retenir la solution suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var=348.719167482121043625
    rgx='^[0-9]{1,3}\.[0-9]{1,18}$'
    if [[ $var =~ $rgx ]] ; then
        echo "OK"
    else
        echo "KO"
    - Toujours un nombre flottant
    - Partie entière entre 1 et 3 caractères avant le point
    - Partie décimale entre 1 et 18 caractères après le point
    - Que des chiffres, aucun autre caractère d'aucune sorte dans toute la variable
    Et si je rajoute ca : >&2; exit 1
    ca veut dire quoi ?


  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    >&2 (ou bien 1>&2) veut dire "envoyer ce qui devrait être écrit sur la sortie standard (stdout) là où va la sortie d'erreur (stderr)".
    Grosso modo, echo "KO" écrit "KO" sur la stdout et echo "KO" >&2 redirige la sortie standard vers la stderr, et donc écrit "KO" sur la stderr.
    Et le exit 1 demande à quitter le programme courant.
    (le ; sert juste à séparer et enchaîner les 2 instructions)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ { echo "so" ; echo "se" 1>&2; } > /tmp/so.txt 2> /tmp/se.txt
     
    $ cat /tmp/so.txt
    so
     
    $ cat /tmp/se.txt
    se

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut
    OK.
    Et si j'ai bien compris le cours de ce forum :
    &> /dev/null signifie :
    redirection simultanée de la sortie standard (descripteur 1) et de la sortie d'erreur standard (descripteur 2), dans le fichier "poubelle" /dev/null pour que cela s'affiche nul part, en fait.
    C'est équivalent à :
    >/dev/null 2>&1

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 810
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 810
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par BEEP-BEEP Voir le message
    &> /dev/null signifie :
    redirection simultanée de la sortie standard (descripteur 1) et de la sortie d'erreur standard (descripteur 2), dans le fichier "poubelle" /dev/null
    Déjà ce n'est pas &>truc mais canalX>&canalY (le "&" se trouve après la redirection, pas avant) et ça signifie littéralement "redirige le canal X vers le canal Y".

    Citation Envoyé par BEEP-BEEP Voir le message
    C'est équivalent à : >/dev/null 2>&1
    Redirige le canal 1 (1 implicite) vers /dev/null et redirige le canal 2 vers le canal 1 (donc vers /dev/null par ricochet)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    si, si, &> existe en bash; ça redirige bien simultanément stdout et stderr. voir le man
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. [Strategie]Redirection après un formulaire
    Par kyser91 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 19/03/2004, 15h15
  2. redirection de trames
    Par Fry dans le forum Développement
    Réponses: 2
    Dernier message: 06/01/2004, 13h31
  3. [VB.NET]Double redirection.
    Par CammCamm dans le forum ASP.NET
    Réponses: 9
    Dernier message: 24/11/2003, 15h11
  4. [VB6] probleme de redirection d'une commande DOS
    Par WriteLN dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/06/2003, 09h36
  5. [reseaux] redirection de flux
    Par Olive1808 dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 12/08/2002, 09h24

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