Retourner aux forums || Retourner au forum Programmation.shell

Programmation.shell : Probleme de script...

Posté par tdldp () le 17 mars 2006
0
Bonjour

Je tente de faire un script sh, afin de traiter, pour une appli qui envoi sur un compte ftp, un dezippage des fichiers, mais uniquement si la presence d'un fichier de maj est présent...

Voici le code :

[code]
#!/bin/bash

cd photos/
if test -f maj.txt then rm -f maj.txt
if test -f photos.zip then unzip -o photos.zip
cp photos.zip old/photos_`date +%d%m%y`.zip
rm -f photos.zip
fi
fi
[/code]

Or à l'execution voici la reponse que j'ai
-bash: appli.sh: command not found

Quand je tente d'executer ligne à ligne le script en shell directement :
-bash: syntax error near unexpected token `fi'

Qq'un peut il m'expliquer mon erreur

> Lire le message (8 commentaires, moyenne: 1,8).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Les erreurs

Posté par niol (page perso, ) le 17/03/2006 à 11:00. (lien). Évalué à 3.

1) Pour lancer le script, il faut faire ./appli.sh car bash ne cherche pas par défaut les commandes dans le répertoire courant, il les cherche dans l'ordre dans les répertoires que te renvoiera la commande echo $PATH

2) En bash, les conditions ne s'écrivent pas comme celà il me semble : si tu ne veux pas passer à la ligne après la condition, il faut un point virgule avant le then.

3) Personnellement, je n'écris pas les conditions commme cela en utilisant la commande test : j'utilise plutôt if [ -f maj.txt ]; then. Si tu veux utiliser test, je ne sais pas trop comment faire et j'ai la flegme de chercher.

  • [^]Re: Les erreurs

    Posté par totof2000 () le 17/03/2006 à 11:43. (lien). Évalué à 3.

    if [ -f maj.txt ]; then.

    Ca se remplace par :
    test -f maj.txt && rm -f maj.txt
    ou
    [ -f maj.txt ] && rm -f maj.txt

  • [^]Re: Les erreurs

    Posté par tdldp () le 17/03/2006 à 14:02. (lien). Évalué à 1.

    en effet merci pour la solution...
    Je suis un noob, et je saurais que conditions prennent des ;

    J'ai donc corrigé et cela fonctionne parfaitement

    Un nouveau probleme toutefois se pose à moi...

    Je tente desormais d'executer cette commande a partir d'une page php...

    J'utilise donc dans ma page php :

    system('cardiff.sh');

    Juste la pas de soucis, page blanche...
    Mais par contre l'execution du script sh ne se fait pas... le zip n'est pas décompresser ce qui pose evidemment soucis...
    quelq'un peut me conseiller sur ce nouveau probleme ???

    tdldp

    • [^]Re: Les erreurs

      Posté par niol (page perso, ) le 17/03/2006 à 15:02. (lien). Évalué à 1.

      Pourquoi ne pas écrire ce que fait cardiff.sh directement en php pour commencer?
      http://fr2.php.net/manual/fr/function.file-exists.php
      http://fr2.php.net/zip
      http://fr2.php.net/manual/fr/function.unlink.php

      Ensuite, si tu veux absoluement mêler les languages, tu peux voir ce qui ne va pas en faisant echo system('cardiff.sh');

      • [^]Re: Les erreurs

        Posté par tdldp () le 17/03/2006 à 15:21. (lien). Évalué à 1.

        La raison pour laquelle je n'ecris pas directement le script sh en php directement, vient du fait que le script sh peut etre appelé directement par le logiciel utilisé, (sans attendre un resultat ou un temps de chargement de page web) mais si on a un soucis avec le logiciel, on doit aussi pouvoir à la mano executer le script a partir de l'interface admin web du site du client...

        C'est pour cela que je veux utiliser system () et meler les languages surtout que php l'autorise normalement...


        Le retour de "echo system" donne : rien..
        Pas d'output.. nada, page blanche... mais ce qui est sur c'est que le script ne s'execute pas...

        sur une autre utilsation de script :
        system('cardiff.sh', $retval);

        j'ai comme retour unique : 127... ce qui je suppose signifie erreur 127.... Mais sans autre detail... Je n'arrive meme pas a trouver sur google la signification de cela, ni comment corriger le probleme...

        Une idée peut etre ???

        tdldp

        • [^]Re: Les erreurs

          Posté par totof2000 () le 17/03/2006 à 15:24. (lien). Évalué à 2.

          Il faut peut-être lui donner le chemin complet du script non ?

          • [^]Re: Les erreurs

            Posté par tdldp () le 17/03/2006 à 16:10. (lien). Évalué à 1.

            Pause dejeuner passée par la... et du mal a m'y remettre je viens de me rendre compte d'une erreur...

            Le script :
            #! /bin/bash
            cd photos/
            if [ -f maj.txt ]; then rm -f maj.txt
            if [ -f photos.zip ]; then unzip -o photos.zip;
            cp -f photos.zip old/photos_`date +%d%m%y`.zip;
            rm -f photos.zip;
            fi
            fi

            fonctionne en ligne de commande.
            Par contre dans le fichier cardiff.sh, son appel en ligne de commande donne :

            [root@xxxx public_html]# cardiff.sh
            -bash: cardiff.sh: command not found

            je comprend pas ou est l'erreur (il fonctionne ce script en ligne de commande)

            Je suppose donc que l'erreur se repercute aussi lors de l'execution en mode php..
            J'ai testé aussi en utilisant #! /bin/sh et ca ne marche pas mieux... La je suis un peu perdu... (et debutant en linux ce qui n'aide pas..)

            qq'un a une idée...
            Est ce une question de chemin dans le script ???

            (mon bash et sh se trouvent tous les 2 dans /bin)

            Merci pour votre aide

            • [^]Re: Les erreurs

              Posté par dark_star () le 18/03/2006 à 11:13. (lien). Évalué à 2.

              cf le commentaire que l'on t'a deja fais, pour lancer un script dans le repertoire courant il FAUT:
              -qu il est les droit d'execution: chmod +x tonscript
              puis le lancer par:

              ./tonscript

              le ./ son necessaire c'est pour une question de securité.

Revenir en haut de page || Retourner aux forums || Retourner au forum Programmation.shell