Retourner aux forums || Retourner au forum Programmation.shell
Programmation.shell : Probleme de script...
Posté par tdldp () le 17 mars 2006Je 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).
Les erreurs
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
-
[^]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



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.