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
# Les erreurs
Posté par niol (site web personnel) . Évalué à 3.
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 . Évalué à 3.
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 . Évalué à 1.
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 (site web personnel) . Évalué à 1.
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 . Évalué à 1.
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 . Évalué à 2.
[^] # Re: Les erreurs
Posté par tdldp . Évalué à 1.
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 Anonyme . Évalué à 2.
-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é.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.