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 :

lire ligne 4 par 4


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut lire ligne 4 par 4
    Bonjour,

    j'ai fait un script me permettant de positionner mes plots comme je veux qui se lance avec 4 indice:
    ./script.sh fichier 1 fichier 2 fichier 3 fichier 4

    Maintenant, j'ai une longue liste de fichier.
    Comment je peux faire pour lire les fichiers 4 par 4 et les lancer avec mon script.

    Merci beaucoup

    jeremy

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 665
    Par défaut
    Bonjour jeremy,

    dans le principe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
     
    while (( $# >= 4 ))
    do echo "$1 - $2 - $3 - $4"
    shift 4
    done
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./script.sh foo bar baz foobar foobaz barbaz barfoo bazfoo bazbar
    foo - bar - baz - foobar
    foobaz - barbaz - barfoo - bazfoo
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut
    salut N_Bah

    il me met une erreur dans ta boucle while:
    ./serie_fig_tex_jpg.sh: ligne 9: fichier.png >= 4 : arithmetic syntax error

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 665
    Par défaut
    une erreur à la ligne 9, sur un script de 6 lignes...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 49
    Par défaut
    lol

    et oui c'est possible !

    bon je te met mon script:
    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
     
    #!/bin/ksh
     
    [ $# -ne 2 ] && echo "serie_fig_tex_jpg.sh RAWDIR RAWDIRR" && exit
     
    path=$1
    path2=$2
     
    #mv $path/G*png $path2
     
    for file in `ls 2`
    do
    #a=$(echo $file | awk -F" " '{print $2}')
    echo "$file"
    #echo "$a"
    #b=$a-4
    fic=$(echo $file | sed 's/.png//1')
    echo "$fic"
    echo " "
     
    while (( $fic>=4) )
    do
    echo "$1 - $2 - $3 - $4"
    shift 4
    done
    done
     
    ....
    Le truc, c'est que j'ai déjà $1 et $2 pris par d'autres variables, ca peut jouer ?

    Merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 665
    Par défaut
    houla... oui, mais non, pas du tout


    bon, après avoir affectés $1 et $2, tu fais un shift 2, mais pas nécessairement, étant donné qu'on va utiliser une fonction.

    déjà je ne comprend pas ce que tu veux faire avec les noms de tes fichiers : si tu modifies leurs noms avant de les utiliser, tu ne pourras pas accéder aux fichiers...

    ensuite, tu devrais peut-être utiliser un tableau pour y placer les chemins/noms des fichiers que tu vas utiliser.

    tableau que tu passeras à une fonction qui, elle traitera les infos de 4 fichiers à chaque fois.

    en gros :
    Code non testé : 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/ksh
     
    function Traitement {
    #pseudo traitement
    while (( $# >= 4 ))
    do echo "$1 - $2 - $3 - $4"
    shift 4
    done
    }
     
    [ $# -ne 2 ] && { echo "usage: $0 <RAWDIR> <RAWDIRR>"; exit; }
     
    path=$1
    path2=$2
     
    RepSrc=tonPath #est-ce $path
    RepDst=autrePath #est-ce $path2
    Files=( $RepSrc/*.png )
     
    Traitement "${Files[@]}"
    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. lire ligne par ligne
    Par mendezino dans le forum VB.NET
    Réponses: 3
    Dernier message: 23/10/2010, 19h20
  2. lire ligne par ligne le contenu d'un JTextArea
    Par info.men dans le forum Débuter
    Réponses: 3
    Dernier message: 07/01/2009, 22h15
  3. lire ligne par ligne dans un fichier text
    Par elouadimohamed dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 19/12/2007, 22h02
  4. lire ligne par ligne dans un stream
    Par zolive dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 05/02/2007, 08h31
  5. Réponses: 6
    Dernier message: 06/01/2007, 17h30

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