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 :

Différence entre ( cmd1 ; cmd2 ; ) et { cmd1 ; cmd2 ; }


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    consultant ETL
    Inscrit en
    Septembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant ETL
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2008
    Messages : 97
    Par défaut Différence entre ( cmd1 ; cmd2 ; ) et { cmd1 ; cmd2 ; }
    Bonjour

    Quelle est la différence entre ( cmd1 ; cmd2 ; ) et { cmd1 ; cmd2 ; } ?

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Bonjour,
    Exemple de différence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ titi=tutu
    $ echo $titi
    tutu
    $ ( titi=toto ; echo $titi ;)
    toto
    $ echo $titi
    tutu
    $ { titi=toto ; echo $titi ;}
    toto
    $ echo $titi
    toto

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Quand tu utilises les parenthèses, tu ouvre un sous-shell. Il s'agit donc d'un nouveau contexte d'exécution avec sa propre mémoire (en dupliquant ce qui vient de la mémoire du processus père).

    Les accolades définissent une simple suite de commandes/instructions.

    Idriss

  4. #4
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    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 347
    Par défaut
    Je suis d'accord, mais difficile à montrer:
    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
    $ echo "$( ps -l)"
     F S    UID   PID  PPID   C PRI NI     ADDR     SZ    WCHAN TTY         TIME CMD
     0 O   1951 19038  1121   0  50 20        ?    226          pts/14      0:00 ps
     0 S   1951 29953 29912   0  40 20        ?    244        ? pts/14      0:00 ksh
     0 S   1951  1121 29953   0  50 20        ?    451        ? pts/14      0:01 bash
    $ { ps -l;}
     F S    UID   PID  PPID   C PRI NI     ADDR     SZ    WCHAN TTY         TIME CMD
     0 S   1951 29953 29912   0  40 20        ?    244        ? pts/14      0:00 ksh
     0 S   1951  1121 29953   0  50 20        ?    452        ? pts/14      0:01 bash
     0 O   1951 19445  1121   0  60 20        ?    226          pts/14      0:00 ps
    $ ( ps -l;)
     F S    UID   PID  PPID   C PRI NI     ADDR     SZ    WCHAN TTY         TIME CMD
     0 O   1951 20151  1121   0  50 20        ?    226          pts/14      0:00 ps
     0 S   1951 29953 29912   0  40 20        ?    244        ? pts/14      0:00 ksh
     0 S   1951  1121 29953   0  50 20        ?    452        ? pts/14      0:01 bash
    La raison pour laquelle je donne un exemple de différence...

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Oui et c'était une bonne chose

  6. #6
    Membre éprouvé
    Homme Profil pro
    consultant ETL
    Inscrit en
    Septembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : consultant ETL
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2008
    Messages : 97
    Par défaut
    merci :-)

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par qqcvd Voir le message
    Quelle est la différence entre ( cmd1 ; cmd2 ; ) et { cmd1 ; cmd2 ; } ?
    Une autre différence plus subtile est que les parenthèses sont des opérateurs alors que les accolades sont des mots réservés.

    En conséquence, ll n'est pas nécessaire de séparer les parenthèses des autres éléments de la ligne de commande mais il est en revanche obligatoire de d'isoler l'accolade des commandes qui l'entourent car elle ne termine pas la commande courante.

    Exemple: (cmd1;cmd2) est correct alors que {cmd1;cmd2} ne l'est pas, et doit être au moins { cmd1;cmd2; }

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

Discussions similaires

  1. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  2. Réponses: 5
    Dernier message: 11/12/2002, 12h31
  3. Différence entre TCP, UDP, ICMP
    Par GliGli dans le forum Développement
    Réponses: 1
    Dernier message: 13/09/2002, 08h25
  4. Différences entre jmp, jz, jnz, etc
    Par christbilale dans le forum Assembleur
    Réponses: 3
    Dernier message: 05/07/2002, 15h09
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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