snwoman49 Posté 21 Septembre 2006 Posté 21 Septembre 2006 Bonjour à tous, Je viens de finir l'écriture d'un script sh, je rencontre quelques problèmes. Tout d'abord ce message d'erreur : syntax error in expression (error token is ".5") Ensuite la boucle ne s'effectue qu'une fois (elle me crée donc un seul fichier) Enfin cette ligne là degrib test.grb latitude_$latdep_longitude_$longdep_$i qui devrait me crée un fichier du type latitude_40_longitude_-5_1 me crée un fichier du type latitude_03 Quelques problèmes donc. Ci-dessous le script sh. Merci d'avance. Amicalement #!/bin/sh# time de 03 à 180# lat latitude# long longitude#temps de départi=03#latitude départ (lat_dep)latdep=0#longitude départ (long_dep)longdep=-70#timewhile [ $i -le 180 ] do #latitude while [ $latdep -le 90 ] do #longitude while [ $longdep -le 70 ] do degrib test.grb latitude_$latdep_longitude_$longdep_$i longdep=$[$longdep+0.5] done latdep=$[$latdep+0.5] done i=$[$i+03]doneexit 0
destroyedlolo Posté 21 Septembre 2006 Posté 21 Septembre 2006 Hum, je ne connais pas ta syntaxe $[...]. De mon cote, pour faire des calculs en shell j'utilise $(( ... )) qui fait parti des spec POSIX. Ensuite ... es-tu sure que ton shell est capable des faire des calcul en flottant ? Certaines versions ne supportent que les calculs sur les entiers. Apres, il y a peut etre une erreur logique dans ton script mais je n'ai pas le temps de regarder pour le moment ...
beal2912 Posté 21 Septembre 2006 Posté 21 Septembre 2006 (modifié) Moi j'aurai écris ça de cette manière : #!/bin/sh# time de 03 à 180# lat latitude# long longitude#temps de départi=3#latitude départ (lat_dep)latdep=0#longitude départ (long_dep)longdep=-70#timewhile [ $i -le 180 ]do #latitude while [ $latdep -le 90 ] do #longitude while [ $longdep -le 70 ] do degrib test.grb "latitude_${latdep}_longitude_{$longdep}_${i}" $longdep=$longdep+0.5 done $latdep=$latdep+0.5 done $i=$i+3doneexit 0 mais il est fortement possible qu'il y ai encore des erreurs je te conseille de faire des echo $iecho $latdepecho $longdep pour voir comment se comporte tes variables au fur et mesure de l'execution du sh Modifié 21 Septembre 2006 par beal2912
snwoman49 Posté 21 Septembre 2006 Auteur Posté 21 Septembre 2006 Re Bonjour, Tout d'abord merci pour vos réponses . Il persiste 2 problèmes : - Le +0.5 ne marche pas (mais le +1 si) - Il n'y qu'une boucle qui se fait (les 2 autres ne se lancent qu'une fois) (boucle 3 qui se lance). Voici le code modifié grâçe à vous : #!/bin/sh# time de 03 à 180# lat latitude# long longitude#temps de départi=03#latitude départ (lat_dep)latdep=20#longitude départ (long_dep)longdep=-5#timewhile [ $i -le 180 ] do #latitude while [ $latdep -le 25 ] do #longitude while [ $longdep -le 0 ] do degrib test.grb latitude_${latdep}_longitude_${longdep}_${i}" echo $i echo $longdep echo $latdep longdep=$(( $longdep + 1 )) done latdep=$(( $latdep + 1 )) done i=$(( $i + 03))doneexit 0
destroyedlolo Posté 21 Septembre 2006 Posté 21 Septembre 2006 Si le .5 ne passe pas => que des entiers. Maintenant, la question est de savoir si les entiers signes passent. Bref, pour eviter toute insertitude, essaie un echo $(( -5 + 1 )) et tu aura directement la reponse. PS: au lieu de mettre /bin/sh, utilise pluto ksh ou bash car je ne suis pas sur que tous ce que tu utilises passe sur un vrais sh.
snwoman49 Posté 21 Septembre 2006 Auteur Posté 21 Septembre 2006 Bonjour, Avec .5 ca ne marche pas , pourtant il faut impérativement que j'utilise le .5 . Pour les boucles idem, elles ne se font pas (sauf la dernière). Voilà. Amicalement
destroyedlolo Posté 22 Septembre 2006 Posté 22 Septembre 2006 Pour les boucles idem, elles ne se font pas (sauf la dernière). T'as essaye mon echo ? Ca donne quoi comme resultat ? Avec .5 ca ne marche pas , pourtant il faut impérativement que j'utilise le .5 . Ben, soit tu multiplie tout par 10 et du divise au moment de passer l'argument ou dans le programme que tu appele, soit tu utilises un autre langage de batch que sh. Par exemple, tout mes batch sont en php mais tu as aussi la possibilite d'utiliser perl ou python. Il y a meme des versions simplifier du basic qui existe en ligne de commande pour Unix et qui font aussi de bon batch.
snwoman49 Posté 23 Septembre 2006 Auteur Posté 23 Septembre 2006 Bonjour, Je l'ai fait en php et ca marche nickel. Merci beaucoup
snwoman49 Posté 15 Octobre 2006 Auteur Posté 15 Octobre 2006 Bonjour, Je fais remonter ce topic car je rencontre un problème avec la commande exec(); Mes scripts ne s'executent pas jusqu'au bou (certains durent 2h). Y a t'il une configuration spéciale à mettre dans le php.ini ? Comment remédier à cela ? Merci d'avance et bonne journée.
NorSeb Posté 15 Octobre 2006 Posté 15 Octobre 2006 Bonjour, Regarde du coté de la fonction set_time_limit() ( http://fr.php.net/manual/fr/function.set-time-limit.php )
snwoman49 Posté 19 Octobre 2006 Auteur Posté 19 Octobre 2006 Bonjour, J'utilise déjà cette fonction et cela ne vient pas de ça. En fet quand je lance le cron du programme PHP moi même ca marche, mais quand il est en cron et qu'il doit se lancer et s'executer soit même ca ne marche pas (pas jusqu'au bou) ! Quand je le lance en ligne de commande via SSH ca marche parfaitement aussi. Merci pour ton aide en tout cas.
destroyedlolo Posté 19 Octobre 2006 Posté 19 Octobre 2006 Hum, peut etre y a-t-il un timeout sur les cron ... Les implementations de CRON d'un OS a l'autre change beaucoup. man cron sera ton ami ...
snwoman49 Posté 20 Octobre 2006 Auteur Posté 20 Octobre 2006 Salut, Je ne pense pas que ca vient du système cron de l'OS Gentoo, puisque j'ai un script SH de backup qui dure plusieurs heures et qui ne s'arrête pas. Je pense que ca vient du PHP.ini, Memory Limit ou tout autre "truc" qui limite la consomnation des scripts. Je vais rechercher ça. Bonne journée
Dan Posté 20 Octobre 2006 Posté 20 Octobre 2006 Il est possible dans ce cas que tu aies un message d'erreur dans le log du serveur. Je ne sais pas si tu es sur dédié, mais dans l'affirmative cela ne serait pas très difficile de trouver la raison
NorSeb Posté 20 Octobre 2006 Posté 20 Octobre 2006 Regarde dans le php.ini de ce coté là : ;;;;;;;;;;;;;;;;;;;; Resource Limits;;;;;;;;;;;;;;;;;;;;max_execution_time = 30 ; Maximum execution time of each script, in secondsmax_input_time = 60; Maximum amount of time each script may spend parsing request datamemory_limit = 8M ; Maximum amount of memory a script may consume (8MB)
snwoman49 Posté 21 Octobre 2006 Auteur Posté 21 Octobre 2006 Bonjour, J'ai modifié les paramètres dans le php.ini, on verra ce que ca donnera demain matin. Sinon pour répondre à Dan oui je suis sur un dédié chez OVH, sous gentoo.
snwoman49 Posté 5 Novembre 2006 Auteur Posté 5 Novembre 2006 Bonsoir, Je rencontre toujours les mêmes problèmes même en mettant le php.ini au max. De quel log parles tu Dan pour trouver l'erreur (je suis sous gentoo sur un dédié ovh) ? Merci d'avance et bonne soirée.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant