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 :

Cherche à comprendre le but d'une certaine ligne d'un script shell


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut Cherche à comprendre le but d'une certaine ligne d'un script shell
    Pouvez vous m'expliquer que fait l'expression dans la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for jpeg in $REP/*.jpg; do
    descr=${jpeg/jpg/txt}
     
    done

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    tout simplement

    pour tout fichier jpeg trouver dans $rep faire......
    remplir la variable desc par ${valeur/jpg/txt}

    ti tu as rep=titi fichier=toto.jpg
    ca fait desc=toto.jpg/jpg/txt

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mars 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    cela ressemble plus a de la substitution, quelle est le shell ?

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par juckc Voir le message
    Bonjour,

    cela ressemble plus a de la substitution, quelle est le shell ?
    C du sh.

  5. #5
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par publicStaticVoidMain Voir le message
    C du sh.
    Non ça, c'est le format de ton fichier, exécutable shell, mais lequel ?
    Il faut regarder la toute première ligne de ton script :

    #!/bin/bash, #!/bin/ksh, #!/bin/nash, #!/bin/bsh ....?

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    c'est pas du ksh dejà parce que la substitution ne marche pas comme ça.

    mais comme ça
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
      ${parameter:-word}
          Substitutes the value of parameter if it is set and non-null; other-
          wise, substitute word.
     
      ${parameter:=word}
          Sets parameter to word if it is not set or is null; the value of the
          parameter is then substituted.  Positional parameters cannot be
          assigned values in this way.
     
      ${parameter:?[word]}
          Substitutes the value of parameter if it is set and is non-null; other-
          wise, print word and exit from the shell.  If word is omitted, a stan-
          dard message is printed.
     
      ${parameter:+word}
          Substitute word if parameteris set and is non-null; otherwise, substi-
          tute nothing.
     
      ${parameter#pattern} | ${parameter##pattern}
          Causes the value of this substitution to be the value of parameter with
          the matched portion deleted if the shell pattern matches the beginning
          of the value of parameter; otherwise the value of parameter is substi-
          tuted.  In the first form, the smallest matching pattern is deleted and
          in the second form, the largest matching pattern is deleted.
     
      ${parameter%pattern} | ${parameter%%pattern}
          Causes the value of this substitution to be the value of parameter with
          the matched part deleted if the shell pattern matches the end of the
          value of parameter; otherwise, substitute the value of parameter. In
          the first form, the smallest matching pattern is deleted and in the
          second form, the largest matching pattern is deleted.

  7. #7
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par SnakemaN Voir le message
    Non ça, c'est le format de ton fichier, exécutable shell, mais lequel ?
    Il faut regarder la toute première ligne de ton script :

    #!/bin/bash, #!/bin/ksh, #!/bin/nash, #!/bin/bsh ....?
    Justement je ne parlais pas de l'extension du fichier. La première ligne commence effectivement par #!/bin/sh. Cest pour ca que j'ai dit que c'est du sh.

  8. #8
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut Bash et Sh
    D'apres une mini recherche, cette expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    descr=${jpeg/jpg/txt}
    est acceptée uniquement en bash mais pas en sh.
    Bash implements essentially the same grammar, parameter and variable expansion, redirection, and quoting as the Bourne Shell. Bash uses the POSIX 1003.2 standard as the specification of how these features are to be implemented. There are some differences between the traditional Bourne shell and Bash; this section quickly details the differences of significance. A number of these differences are explained in greater depth in previous sections. This section uses the version of sh included in SVR4.2 as the baseline reference.
    Voici un lien en anglais qui explique les différences entre bash et sh :
    http://www-licence.ufr-info-p6.jussi...s_sh_bash.html

  9. #9
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par publicStaticVoidMain Voir le message
    Justement je ne parlais pas de l'extension du fichier. La première ligne commence effectivement par #!/bin/sh. Cest pour ca que j'ai dit que c'est du sh.
    Oups, autant pour moi, c'est juste que je n'utilise jamais le sh, plutot bash, voire ksh plus complet et personnalisable

  10. #10
    Membre éprouvé

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Points : 1 058
    Points
    1 058
    Par défaut
    Bonjour.
    /bin/sh est en génèral un lien vers le shell utilisé par défaut (/bin/bash ou autre).
    Un script commençant pas #!/bin/sh doit être interprétable par tous les shells (en théorie!). Ce qui ne semble pas le cas ici.
    Vers quel éxécutable pointe /bin/sh chez toi?

  11. #11
    Membre confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Points : 622
    Points
    622
    Par défaut
    Citation Envoyé par vinc-mai Voir le message
    Bonjour.
    /bin/sh est en génèral un lien vers le shell utilisé par défaut (/bin/bash ou autre).
    Chez moi, c'est un lien symbolique vers /bin/bash

Discussions similaires

  1. [MySQL] Affichage simple d'une certaine ligne d'un tableau
    Par linux_21 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/06/2008, 09h19
  2. Écrire dans un fichier à une certaine ligne
    Par shirya dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 19/09/2007, 16h43
  3. Réponses: 7
    Dernier message: 16/07/2007, 18h23
  4. selection d'une cellule sur une certaine ligne
    Par florent149 dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 20/07/2006, 18h37
  5. Récupéré l'identifiant d'une certaine ligne
    Par Trunks dans le forum Langage SQL
    Réponses: 6
    Dernier message: 25/01/2005, 02h08

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