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

Linux Discussion :

Script shell (argument)


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut Script shell (argument)
    Bonsoir,

    j'essaye d'extraire les colonnes d'un fichier fic: voila un extrait:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    -rwxrw-r--    162018    1     pinfo3 Innadm     178               20051223-11:41:51 20060103-10:20:35 20051224-21:37:25 8     pb.sql
    -rwx------    160931    1     pinfo3 Innadm     172               20051228-16:26:34 20060103-10:20:35 20051228-16:26:34 8     pip.sas
    -rw-r-----    160933    1     pinfo3 Innadm     132               20051228-12:16:03 20060103-10:20:35 20051228-12:16:03 8     fic2
    je lance un script avec des options et suivant ces derniere j'extrait les colonnes correspondantes.

    l'option -S c'est pour supprimer ou masquer les colonnes qui corresponds
    aux options passés derrière S

    exemple:

    REp.sh -* -Sid "càd afficher toutt sauf les deux premieres colonnes"



    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    tyty * > fic
     
    local flags0=0
    local flags1=0
    local flags2=0
    local flags3=0
    local flags4=0
    local flags5=0
    local flags6=0
    local flags7=0
    local flags8=0
    local flags9=0
    local flags10=0
    local flags11=0
    local flags12=0
    m=11
    n=1
     
    while getopts ":dilpgomrwbn*S:dilpgomrwbn*" y
    do
      case $y in
     
         d ) flags1=1                   ;;                   
         i ) flags2=2                   ;;
         l ) flags3=3                   ;; 
         p ) flags4=4                   ;; 
         g ) flags5=5                   ;; 
         o ) flags6=6                   ;;                                                                      
         m ) flags7=7                   ;; 
         r ) flags8=8                   ;; 
         w ) flags9=9                   ;; 
         b ) flags10=10                 ;;   
         n ) flags11=11                 ;; 
         * ) flags12=12                 ;;   
         S ) case $OPTARG in
                          d  ) flags1=0                   ;;
                          i  ) flags2=0                   ;;
                          l  ) flags3=0                   ;;
                          p  ) flags4=0                   ;;
                          g  ) flags5=0                   ;;
                          o  ) flags6=0                   ;;
                          m  ) flags7=0                   ;;
                          r  ) flags8=0                   ;;
                          w  ) flags9=0                   ;;
                          b  ) flags10=0                  ;;
                          n  ) flags11=0                  ;;
                          *  ) flags12=0                  ;;             
     
             esac                      
             ;;                  
      esac              
    done 
     
    shift $(($OPTIND - 1)) 
     
    #echo $flags1   
    #echo $flags2 
    #
    #echo $flags7 
     
     
    for i in flags1 flags2 flags3 flags4 flags5 flags6 flags7 flags8 flags9 flags10 flags11
    do
      #for j in `cat fic`
      #do
     
      if [ $i -ne 0 ]
      then
         y=$i
         #echo $y
         z=${y##flags}
         echo $z >>u
         for j in `cat u`
         do
     
           echo $j
           awk ' { print $j }' fic  > toto""$j      
         done 
     
      fi
     
      #done
    done
    Merci[/quote]

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 805
    Points
    30 805
    Par défaut
    J'ai commencé à essayer de comprendre ce que voulait faire ton script.
    J'avoue que quelques commentaires ne seraient pas superflus (Le caractère # en début de ligne sert à ça aussi...)

    Commençons par la prise en compte des paramètres.

    Déjà, la ligne a peu de chances de s'exécuter correctement. * est un caractère traité spécialement par case pour signifier une lettre absente de la liste.fonctionnera certainement mieux.

    Ensuite le test sur OPTARG ne fonctionnera que si une seule lettre à la fois est passée à l'option -S.
    L'option -Sin ne sera pas prise en compte, il faudrait passer -Si -Sn

    Je n'ai pas été plus loin pour le moment.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 166
    Points : 39
    Points
    39
    Par défaut script shell (argument)
    Citation Envoyé par al1_24
    J'ai commencé à essayer de comprendre ce que voulait faire ton script.
    J'avoue que quelques commentaires ne seraient pas superflus (Le caractère # en début de ligne sert à ça aussi...)

    Commençons par la prise en compte des paramètres.

    Déjà, la ligne a peu de chances de s'exécuter correctement. * est un caractère traité spécialement par case pour signifier une lettre absente de la liste.fonctionnera certainement mieux.

    Ensuite le test sur OPTARG ne fonctionnera que si une seule lettre à la fois est passée à l'option -S.
    L'option -Sin ne sera pas prise en compte, il faudrait passer -Si -Sn

    Je n'ai pas été plus loin pour le moment.

    est qu'il ya pas une possibilité pour modifier les parametres

    càd : modifier le parametre -Sin en -Si -Sn



    Merci

Discussions similaires

  1. script shell et arguments en entrée
    Par Lolitaaa dans le forum Linux
    Réponses: 7
    Dernier message: 03/07/2010, 11h17
  2. Appeller un script shell argumenté
    Par habiba dans le forum Linux
    Réponses: 6
    Dernier message: 03/09/2008, 18h41
  3. Vérification des arguments d'un script(shell)
    Par Info_76 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/03/2008, 19h10
  4. Un script shell avec nombre d'argument variable
    Par lastrecrue dans le forum Linux
    Réponses: 1
    Dernier message: 28/05/2006, 11h35
  5. Cron + terminal + script shell
    Par nicolas.pissard dans le forum Linux
    Réponses: 3
    Dernier message: 17/03/2004, 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