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 :

Help, debug command not found


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut Help, debug command not found
    Bonjour à tous,

    Voilà je n'y connais pas grand chose au shell mais je dois modifier le programme ci dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/bin/bash
    # Script de sauvegarde des sites
    datejour="date +%Y-%m-%d"
    premier="date +%d" 
    mois="date +%m"
     
    # Mise en place d'un suffixe
    suffix="journaliere"
     
    if [ "$premier" == "01" ]; then suffix="mensuel"; fi
    if [ "$mois" == "03" ]; then suffix="trimestrielle"; fi
    if [ "$mois" == "06" ]; then suffix="trimestrielle"; fi
    if [ "$mois" == "09" ]; then suffix="trimestrielle"; fi
    if [ "$mois" == "12" ]; then suffix="trimestrielle"; fi
    A chaque fois que je lance ce programme avec bash il me retourne les erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    : command not found 4:
    : command not found 6:
    : command not found 9:
    sauvegarde.sh: line 15: syntax error: unexpected end of file
    A priori, les erreurs sont situées sur les lignes vides et la ligne avec le code premier="date +%d".
    Je pensais que ça venait de "date" mais la commande est bien la et son dossier est bien dans le PATH.
    Auriez-vous une idée de l'origine du problème ?

    Merci,
    Greg

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Bonjour.

    Peux-tu afficher le résultat des commandes tapées depuis le répertoire contenant le script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    which bash
    od -c le_script # (ou "vi -A le_script", me semble-t-il)
    bash -x ./le_script
    Le script a-t-il transité par windoze, mail ou autre?

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut
    Bonjour jack et merci de ta réponse.

    which bash
    => Chemin du bash

    od -c
    =>
    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
    0000000   #   !   /   b   i   n   /   b   a   s   h  \r  \n   #       S
    0000020   c   r   i   p   t       d   e       s   a   u   v   e   g   a
    0000040   r   d   e       d   e   s       s   i   t   e   s  \r  \n   d
    0000060   a   t   e   j   o   u   r   =   "   d   a   t   e       +   %
    0000100   Y   -   %   m   -   %   d   "  \r  \n   p   r   e   m   i   e
    0000120   r   =   "   d   a   t   e       +   %   d   "      \r  \n   m
    0000140   o   i   s   =   "   d   a   t   e       +   %   m   "  \r  \n
    0000160  \r  \n   #       M   i   s   e       e   n       p   l   a   c
    0000200   e       d   '   u   n       s   u   f   f   i   x   e  \r  \n
    0000220   s   u   f   f   i   x   =   "   j   o   u   r   n   a   l   i
    0000240   e   r   e   "  \r  \n  \r  \n   i   f       [       "   $   p
    0000260   r   e   m   i   e   r   "       =   =       "   0   1   "
    0000300   ]   ;       t   h   e   n       s   u   f   f   i   x   =   "
    0000320   m   e   n   s   u   e   l   "   ;       f   i  \r  \n   i   f
    0000340       [       "   $   m   o   i   s   "       =   =       "   0
    0000360   3   "       ]   ;       t   h   e   n       s   u   f   f   i
    0000400   x   =   "   t   r   i   m   e   s   t   r   i   e   l   l   e
    0000420   "   ;       f   i  \r  \n   i   f       [       "   $   m   o
    0000440   i   s   "       =   =       "   0   6   "       ]   ;       t
    0000460   h   e   n       s   u   f   f   i   x   =   "   t   r   i   m
    0000500   e   s   t   r   i   e   l   l   e   "   ;       f   i  \r  \n
    0000520   i   f       [       "   $   m   o   i   s   "       =   =
    0000540   "   0   9   "       ]   ;       t   h   e   n       s   u   f
    0000560   f   i   x   =   "   t   r   i   m   e   s   t   r   i   e   l
    0000600   l   e   "   ;       f   i  \r  \n   i   f       [       "   $
    0000620   m   o   i   s   "       =   =       "   1   2   "       ]   ;
    0000640       t   h   e   n       s   u   f   f   i   x   =   "   t   r
    0000660   i   m   e   s   t   r   i   e   l   l   e   "   ;       f   i
    0000700
    bash -x ./lescript
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ' datejour='date +%Y-%m-%d
    + premier='date +%d'
    + $'\r'
    : command not foundne 4:
    ' mois='date +%m
    + $'\r'
    : command not foundne 6:
    + suffix=$'journaliere\r'
    + $'\r'
    : command not foundne 9:
    ./sauvegarde.sh: line 15: syntax error: unexpected end of file
    J'ai édité le script avec Dreamweaver sous windobe (ceymal).
    Après au vue de du retour de bash -x je me dis qu'il interprète des retours à ligne (?).

    Tcho,
    Greg

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par greg0037 Voir le message
    Bonjour jack et merci de ta réponse.

    od -c
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    0000000   #   !   /   b   i   n   /   b   a   s   h  \r  \n   #       S
    0000020   c   r   i   p   t       d   e       s   a   u   v   e   g   a
    0000040   r   d   e       d   e   s       s   i   t   e   s  \r  \n   d
    0000060   a   t   e   j   o   u   r   =   "   d   a   t   e       +   %
    0000100   Y   -   %   m   -   %   d   "  \r  \n
    [snip]
    bash -x ./lescript
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' datejour='date +%Y-%m-%d
    + premier='date +%d'
    + $'\r'
    J'ai édité le script avec Dreamweaver sous windoZe (ceymal).
    Après au vue de du retour de bash -x je me dis qu'il interprète des retours à ligne (?).
    Ben ouais, dans le 'od' et 'bash -x' on voit clairement le \r encore appelé ^M ou return et qui est la marque windoZienne bien connue et qui apparaissent avant chaque \n encore appelé ^J ou line feed et qui est la fin de ligne unixienne.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    c'est cat -A fichier, ou vim -c'set list' fichier.

    pour la petite histoire, "$premier" ne vaudra jamais 01, car la commande n'a pas été substituée par sa valeur d'affichage, mais seulement inscrite dans la variable, donc "$premier" vaudra toujours date %+d, littéralement !

    passe ton script par fromdos pour le convertir au format UNIX.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 23
    Par défaut
    Jack => J'ai modifié les 3 premières lignes.
    N_BaH => La commande fromdos n'existe pas dans mon système.

    Par contre je suis passé par vim pour écrire mon fichier et là plus d'erreur !

    Alors juste pour plus de détail, suis-je obligé de passer par vim pour écrire un shell à partir de windows ?

    Merci encore pour votre aide,
    Greg

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    les éditeurs sous Windows ne peuvent-ils pas enregistrer un fichier dans le format UNIX ?

    <mode troll=on>
    Windows ne sert à rien
    écris donc tes scripts pour linux sur linux !
    <mode troll=off>
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    les éditeurs sous Windows ne peuvent-ils pas enregistrer un fichier dans le format UNIX ?
    Ben si.

    Il me semble que NotePad++ a cette option (en tout cas, il sait ajouter le BOM et, heureusement, le retirer).

    Sinon, ntemacs ou GNU emacs savent aussi le faire...

    Pour Dreamweaver, je ne sais pas... faut voir les options...

    Sinon, il y a dos2unix pour convertir.

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    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 102
    Par défaut
    Citation Envoyé par greg0037 Voir le message
    Bonjour à tous,

    Voilà je n'y connais pas grand chose au shell mais je dois modifier le programme ci dessous :
    Pour qu'il marche?

    Je pensais que ça venait de "date" mais la commande est bien la et son dossier est bien dans le PATH.
    La commande 'date' n'est pas exécutée dans ton script car elle est entre guillemets.

    Indépendamment des autres erreurs, sémantiquement parlant, je remplacerais bien les premières lignes par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
    # Script de sauvegarde des sites
    datejour=$(date +%Y-%m-%d)
    premier=$(date +%d)
    mois=$(date +%m)

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

Discussions similaires

  1. v4l-info: command not found
    Par Flophx dans le forum Matériel
    Réponses: 1
    Dernier message: 06/05/2007, 00h20
  2. mysql : commande not found
    Par big1 dans le forum Installation
    Réponses: 2
    Dernier message: 02/01/2007, 16h53
  3. Ssh commande not found
    Par marielaure2805 dans le forum Réseau
    Réponses: 3
    Dernier message: 19/10/2006, 12h26
  4. Debug : source not found
    Par polo54 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 16/10/2006, 15h42
  5. Command not found avec csh
    Par mavina dans le forum Linux
    Réponses: 2
    Dernier message: 25/04/2006, 13h47

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