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 de script shell


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2012
    Messages : 40
    Points : 33
    Points
    33
    Par défaut Problème de script shell
    salut tout le monde,

    je suis débutant en script shell et j'ai besoin d'aide pour mon projet fin d'étude.

    je travaille sur ubuntu.

    j'ai 3 dossiers dans le bureau
    le premier nommé input, dans lequel se trouve un fichier nommé fichier1
    le deuxième dossier nommé tmp
    et la 3eme dossier est output.

    le travail est le suivant:
    copier le fichier1 (depuis input) dans le dossier tmp ,puis
    couper le fichier1 dans output.

    merci d'avance.

    J'espere m'être exprimé clairement .

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

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

    c'est une bête question de cours, donc relis ton cours !

    qu'est-ce que tu veux dire par «couper dans le dossier output» ? tu veux dire déplacer ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2012
    Messages : 40
    Points : 33
    Points
    33
    Par défaut
    desolée je veux dire deplacer par couper dans dossier output
    et merci d'avance

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 442
    Points
    19 442
    Par défaut
    et merci d'avance
    il n'y a pas de quoi.
    ma réponse est la même : relis ton cours, propose-nous un code, et on te diras ce qu'on en pense.

    regarde info coreutils 'Basic operations'

  5. #5
    Membre habitué
    Homme Profil pro
    root
    Inscrit en
    Janvier 2013
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : root

    Informations forums :
    Inscription : Janvier 2013
    Messages : 174
    Points : 144
    Points
    144
    Par défaut
    Le coreutils est vraiment sympa et pratique: http://fr.wikipedia.org/wiki/GNU_Core_Utilities

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2012
    Messages : 40
    Points : 33
    Points
    33
    Par défaut script shell
    Bonjour.

    Je travaille sur ubuntu.
    Je veux faire un script shell qui permet de copier le fichier1 (depuis input) dans le dossier tmp et un autre script shell qui permet de déplacer le fichier1 dans output.

    Alors je fait le travail suivant sur Ubuntu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    karim@ubuntu:~$ sudo -s
    [sudo] password for karim: 
    root@ubuntu:~# gedit test.sh
    Un fichier script s'ouvre dans laquelle j’écris le code suivant qui est un code qui permet de copier le fichier1 qui se trouve dans le dossier input dans le dossier tmp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh
    #Shell to copy a file to folder
    SC=/home/karim/Desktop/input/fichier1 
    DST=/home/karim/Desktop/tamp
    for i in "$SC"
    do 
    #cp $i $DST
    done
    Puis enregistrer et je ferme le fichier script.
    Dans le terminal je termine mon travail comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    root@ubuntu:~# chmod +x test.sh
    root@ubuntu:~# ./test.sh
    ./test.sh: 8: Syntax error: "done" unexpected
    root@ubuntu:~#
    Mon travail pour copier le fichier ne me donne aucune résultat/

    J’espère m'être exprimé clairement .
    et merci d'avance

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par tony7 Voir le message
    salut tout le monde,

    je suis débutant en script shell et j'ai besoin d'aide pour mon projet fin d'étude.
    j'ai 3 dossiers dans le bureau
    le premier nommé input, dans lequel se trouve un fichier nommé fichier1
    le deuxième dossier nommé tmp
    et la 3eme dossier est output.

    le travail est le suivant:
    copier le fichier1 (depuis input) dans le dossier tmp ,puis
    couper le fichier1 dans output.
    Salut
    J'aurais bien aimé moi aussi que mon "projet de fin d'études" soit un truc qui prend 2 lignes...

    Sans déconner, ce que tu demandes est un truc qu'on apprend à faire lors de la "prise en main des commandes unix" (le tout premier cours). T'as juste 2 commandes à taper et c'est fini quoi...

    Citation Envoyé par tony7 Voir le message
    Bonjour.

    Je travaille sur ubuntu.
    Je veux faire un script shell qui permet de copier le fichier1 (depuis input) dans le dossier tmp et un autre script shell qui permet de déplacer le fichier1 dans output.

    Alors je fait le travail suivant sur Ubuntu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    karim@ubuntu:~$ sudo -s
    [sudo] password for karim: 
    root@ubuntu:~# gedit test.sh
    Un fichier script s'ouvre dans laquelle j’écris le code suivant qui est un code qui permet de copier le fichier1 qui se trouve dans le dossier input dans le dossier tmp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh
    #Shell to copy a file to folder
    SC=/home/karim/Desktop/input/fichier1 
    DST=/home/karim/Desktop/tamp
    for i in "$SC"
    do 
    #cp $i $DST
    done
    Puis enregistrer et je ferme le fichier script.
    Dans le terminal je termine mon travail comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    root@ubuntu:~# chmod +x test.sh
    root@ubuntu:~# ./test.sh
    ./test.sh: 8: Syntax error: "done" unexpected
    root@ubuntu:~#
    Mon travail pour copier le fichier ne me donne aucune résultat/

    J’espère m'être exprimé clairement .
    et merci d'avance
    Bon, on a répondu ensemble alors je vais continuer mon post.
    Déjà pourquoi fais tu un "sudo" ? As-tu besoin, pour travailler sur tes fichiers, d'être root ??? Devenir root sur Unix est très dangereux car toutes les actions que tu fais alors ne sont absolument plus contrôlées. Tu peux en une seule commande planter définitivement ton système. Donc tu as un travail à faire, tu le fais sous ton compte utilisateur standard. Même si tu fais une connerie, tu ne planteras que ton compte et ta machine reste protégée.

    Ensuite dans ton script tu pars sur une boucle. Pourquoi ? Une boucle ne se justifie que si tu dois faire un même traitement sur plusieurs choses distinctes. Ici tu as un fichier à copier quelque part puis un fichier à déplacer autre part. Pas besoin de boucle. Un cp et un mv et c'est fini...

    Accroche-toi...

    PS: En ce qui concerne l'erreur de syntaxe à propos du "done", elle vient du fait que ta boucle do...done n'a aucune instruction interne (ton cp étant mis en commentaires, il est ignoré). Or une boucle doit impérativement avoir une instruction shell pour être valide. Donc si tu veux écrire une boucle vide, il te faut y mettre quand-même une instruction (par exemple l'instruction neutre "true")
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in 1 2 3
    do
        true
    done

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Donc si tu veux écrire une boucle vide, il te faut y mettre quand-même une instruction (par exemple l'instruction neutre "true")
    laquelle peut être abrégée en ':':
    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in 1 2 3
    do
        :
    done


    C'est aussi une manière plus "légère" de "commenter" du code (tout en gardant certaines vérifications):
    Code sh : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/sh
    #Shell to copy a file to folder
    SC=/home/karim/Desktop/input/fichier1 
    DST=/home/karim/Desktop/tamp
    for i in "$SC"
    do 
      : cp $i $DST
    done

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. problème script shell
    Par jeje69 dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 09/01/2008, 14h30
  3. problème sur script shell
    Par cyranno dans le forum Linux
    Réponses: 1
    Dernier message: 11/12/2007, 16h19
  4. Petit problème de script shell
    Par Mainman dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 08h07
  5. Problème avec mon script shell case in esac
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 28/06/2007, 22h54

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