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 :

[Shell] Caractère *


Sujet :

Linux

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 45
    Points
    45
    Par défaut [Shell] Caractère *
    Bonjour,

    Je travaille actuellement sur un projet Linux / Shell.
    En fait, je dois lire une liste de fichier contenant des données de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0 0 0 1,15 * * commande
    2 30 2 1,15 * * commande
    0 15 3 * * commande
    1 * * * * * commande
    J'utilise la commande set sur chaque ligne du fichier, et le soucis, c'est que je n'arrive pas à récupérer le caractère *, j'obtiens soit dans un cas le $i ou dans un autre cas la liste des fichiers du répertoire courant.

    Je vous montre mon code :

    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
    for file in `ls /etc/tache`
    do
            while read line
            do
                    set $line
     
                    if [ $# -eq 7 ]
                    then
                            echo "Ligne : $*"
                            echo "Seconde :" $1
                            echo "Minute :" $2
                            echo "Heure :" $3
                            echo "Jour du mois : $4"
                            echo "Mois de année : $5"
                            echo "Jour de la semaine : $6"
                            echo "Commande : $7"
                    else
                            echo "Erreur"
                    fi
     
            done < $file
    done
    Si vous avez une solution pour banaliser le caractère étoilé, je vous remercie.

    Bye.

    Spirit

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Salut,

    Avec awk c'est tres facile:
    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
    #!/bin/sh
     
    for file in `ls *.txt`
    do
        awk '{ 
        if (NF == 7) {
            print "Ligne : "$0"\n\
            Seconde : "$1"\n\
            Minute : "$2"\n\
            Heure : "$3"\n\
            Jour du mois : "$4"\n\
            Mois de année : "$5"\n\
            Jour de la semaine : "$6"\n\
            Commande : "$7""
        }
        else
             print "Erreur"
     
        }' $file
    done
    C'est pour le principe, tu ferais probablement mieux d'utiliser printf (meme syntaxe qu'en C) pour la sortie.

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Février 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 60
    Points : 45
    Points
    45
    Par défaut
    Super je te remercie.

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Ton code de départ était bon, à ceci prèt qu'il faut mettre les $*, $1, $2, ... entre les double quotes pour ne pas que le shell les interprète.

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

Discussions similaires

  1. script shell: problème avec le caractère espace
    Par Le fut dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 04/05/2017, 11h49
  2. Réponses: 2
    Dernier message: 17/10/2007, 13h15
  3. Réponses: 6
    Dernier message: 14/08/2007, 16h44
  4. Recherche chaine de caractère script shell
    Par guilig dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 09/08/2007, 11h06
  5. Réponses: 2
    Dernier message: 31/07/2007, 16h25

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