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 :

Problème avec les arguments


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 23
    Points : 26
    Points
    26
    Par défaut Problème avec les arguments
    Bonsoir , je debute en bash
    j'ai un exercice on me demande de creer un script qui copiera des fichiers dans un ou plusieurs répertoires ( les fichiers et les répertoires seront donnés en argument)
    les répertoires et les fichiers seront sépares par ":"

    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/bash
    position=1;
    for var in $@
    do 
    if [ $var == ":" ]
    then 
    break; 
    fi
    let position="$position + 1" 
    done 
    echo $position 
     
    for ((i=0 ; i<$position ; i++))
     do 
     
    for ((j=$position  ;j<=$# ;j++))
    do  
       cp `$j` `$i`
    done 
    done
    la copie ne marche pas puisque j'aurai cp 1 1 , je voudrai savoir comment je pourrai manipuler les arguments içi ?
    Merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    les répertoires et les fichiers seront sépares par ":"
    un exemple de la façon dont tu appelles ton script avec des arguments...? et du résultat attendu !

    a priori :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
     
    IFS=':' read -a liste <<<"$@"
    echo "fichier = ${liste[0]}"
    echo "répertoire = ${liste[1]}"


    @contributeurs : je ne sais pas pour vous, je trouve les requêtes des plus nébuleuses en ce moment.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 23
    Points : 26
    Points
    26
    Par défaut
    je me sens bete , j'ai perdu mon temps alors que y'avait plus simple ,
    Par contre je comprends pas votre code

    un exemple : supposons que le script c'est cp_special
    ./cp_special rep1 rep2 rep3 : fichier1 fichier2 ficher 3

    je veux mettre tout les fichiers dans chaque répertoire

    edit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/bin/bash 
    IFS=':' read -a liste <<<"$@"
    echo "fichier = ${liste[0]}"
    echo "répertoire = ${liste[1]}"
    for rep in ${liste[1]}
    do
    for fic in ${liste[0]}
    do
    cp $fic $rep/
    done
    done
    ça marche mais je comprends pas toujours pas vos fonctions

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour,

    C'est très beau, comme script.

    read -a remplit un tableau (lequel? liste) avec des éléments (venus d'où? Des paramètres du script $@) en considérant ':' comme séparateur (pourquoi? IFS=':')

    Après le mot clé for, le séparateur entre les arguments est l'espace. Donc il n'y a rien à faire pour que les boucles trouvent leurs éléments et fassent le boulot.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/09/2011, 08h42
  2. [débutant] problème avec les arguments de fopen
    Par Anouschka dans le forum C++
    Réponses: 13
    Dernier message: 23/02/2006, 14h56
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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