A voir également:
- Petit script shell exécution bizarre
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Excel trier du plus grand au plus petit - Guide
- Petit 2 ✓ - Forum Bureautique
- Microsoft activation script - Accueil - Windows
9 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 mars 2011 à 12:52
3 mars 2011 à 12:52
essai en mettant "set +C" au début de ton script. Si ça ne fonctionne pas, c'est que ton if est mal écrit (rajoute un echo pour être sur que tu passes dedans).
je ne vois pas ta réponse snipeur...bon je crois qu'il y a eu un bug je voyais une réponse de ta part mais apparemment non
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 mars 2011 à 13:56
3 mars 2011 à 13:56
ba si. :
essai en mettant "set +C" au début de ton script. Si ça ne fonctionne pas, c'est que ton if est mal écrit (rajoute un echo pour être sur que tu passes dedans).
essai en mettant "set +C" au début de ton script. Si ça ne fonctionne pas, c'est que ton if est mal écrit (rajoute un echo pour être sur que tu passes dedans).
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 14:00
3 mars 2011 à 14:00
Salut,
echo $1 > f${var}
je ne vois aucune erreur dans mon if snipeur donc...et je ne comprends pas pq je ne passerai pas dans le if :-)
zipe: merci mais ça ne change pas grand chose, c'est sympa de m'aider mais es tu certain de faire du sh car tes réponses parfois me paraissent étranges comparées aux réponses de ceux qui connaissent le langage ( prends le pas mal ).
zipe: merci mais ça ne change pas grand chose, c'est sympa de m'aider mais es tu certain de faire du sh car tes réponses parfois me paraissent étranges comparées aux réponses de ceux qui connaissent le langage ( prends le pas mal ).
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 14:49
3 mars 2011 à 14:49
Bon on va procéder par élimination...
Quel système ?
Quelle distrib ?
Quel shell ?
Quel système ?
Quelle distrib ?
Quel shell ?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 mars 2011 à 14:53
3 mars 2011 à 14:53
Je pense que zipe se débrouille très bien. Il me semble qu'il m'a déjà aider une fois ou deux.
Bref, tu n'as pas répondu, as tu essayé en mettant "set +C" ?
Le echo, c'est pour être sur, des fois, on ne voi pas les erreurs, mais elle y sont bien.
je pense que :
echo $1 >> f${var}
correspondrait mieux à ton problème.
Bref, tu n'as pas répondu, as tu essayé en mettant "set +C" ?
Le echo, c'est pour être sur, des fois, on ne voi pas les erreurs, mais elle y sont bien.
je pense que :
echo $1 >> f${var}
correspondrait mieux à ton problème.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 15:01
3 mars 2011 à 15:01
Lances ton script en mode débogage, autrement dit rajoutes "set -xv" après le shebang, et affiches-nous le résultat.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 mars 2011 à 15:02
3 mars 2011 à 15:02
hum...
http://unixhelp.ed.ac.uk/CGI/man-cgi?test
ton problème viens bien du if...
-z STRING
the length of STRING is zero
Essai :
if [ -z $(cat f$var) ]
http://unixhelp.ed.ac.uk/CGI/man-cgi?test
ton problème viens bien du if...
-z STRING
the length of STRING is zero
Essai :
if [ -z $(cat f$var) ]
for i in 1 2 do var='./alea.sh' if [ -z f$var ] then echo $1 > f$var fi done + for i in 1 2 for i in 1 2 do var='./alea.sh' if [ -z f$var ] then echo $1 > f$var fi done + for i in 1 2 ./alea.sh ++ ./alea.sh ./alea.sh ++ ./alea.sh + var=3 + '[' -z f3 ']' + for i in 1 2 + var=4 + '[' -z f4 ']' + for i in 1 2 ./alea.sh ++ ./alea.sh ./alea.sh ++ ./alea.sh + var=2 + '[' -z f2 ']' + var=4 + '[' -z f4 ']'
voila pour zipe, mais pour snipeur c'est pas possible que la chaine vaut 0 car comme tu le vois j'ai bien mes f2 f3...dans l'exécution au dessus.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 15:13
3 mars 2011 à 15:13
A part que "-z" renvoie vrai si la longueur de la chaine vaut 0 (zéro), ce qui n'est pas le cas ;-(
[ ! -z f${var} ]
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 mars 2011 à 15:17
3 mars 2011 à 15:17
tu comprends vite, mais faut expliquer longtemps...
ton script dit :
si la chaine de caractère est vide, alors mettre le premier argument dans le fichier de la chaine caractère.
J'espère qu'en plus tu apprécies le non sens du truc.
En plus, comme tu le dit, il n'est pas possible que ta chaine soit nulle (d'où en plus le désinteret total de faire un test sur un résultat que tu connais).
Pour finir c'est le fichier qui est vide, pas la chaine !
On aurait gagner du temps si comme je te l'avais dit tu avais mis un echo. Tu te serais alors apperçut que tu ne rentrai pas dans la boucle.
Ce que prouve d'ailleurs ton debug !
ton script dit :
si la chaine de caractère est vide, alors mettre le premier argument dans le fichier de la chaine caractère.
J'espère qu'en plus tu apprécies le non sens du truc.
En plus, comme tu le dit, il n'est pas possible que ta chaine soit nulle (d'où en plus le désinteret total de faire un test sur un résultat que tu connais).
Pour finir c'est le fichier qui est vide, pas la chaine !
On aurait gagner du temps si comme je te l'avais dit tu avais mis un echo. Tu te serais alors apperçut que tu ne rentrai pas dans la boucle.
Ce que prouve d'ailleurs ton debug !
attends zipe le -z sert bien à tester si un fichier est vide?
Car j'avais testé avec ! -z et tout marchait bien mais le ! -z teste: si le fichier n'est pas vide alors on écrit dedans, non? Comme à la base ils sont tous vides le ! -z est censé ne pas marché, bizarre...
Car j'avais testé avec ! -z et tout marchait bien mais le ! -z teste: si le fichier n'est pas vide alors on écrit dedans, non? Comme à la base ils sont tous vides le ! -z est censé ne pas marché, bizarre...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 15:21
3 mars 2011 à 15:21
Non le "-z" teste la longueur d'une chaine, pas la taille d'un fichier ;-(
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
3 mars 2011 à 15:24
3 mars 2011 à 15:24
ouf !
ça fait 3-4 messages que je le dit. Je me suis même donner la peine de mettre un bout du man ET la solution.
ça fait 3-4 messages que je le dit. Je me suis même donner la peine de mettre un bout du man ET la solution.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 15:27
3 mars 2011 à 15:27
Pour tester la taille d'un fichier c'est "-s" :
Mais là aussi il faut faire gaffe à comment on exploite le résultat ;-))
-s file True if file exists and has a size greater than zero.
Mais là aussi il faut faire gaffe à comment on exploite le résultat ;-))
bon merci ça ira je pense pouvoir finaliser le truc tout seul, juste une question :
imaginez un lockfile toto.verrou juste avant le var=... et un rm -f toto.verrou juste après le fi, ça nous assure bien qu'un processus n'écrasera pas la valeur d'un autre mais en faisant un set -x j'ai 2 lockfile toto.verrou, c'est bizarre car une fois qu' un verrou est crée l'autre processus ne peut l'ouvrir tant que le rm -f sur le verrou n'a pas été exécuté...
imaginez un lockfile toto.verrou juste avant le var=... et un rm -f toto.verrou juste après le fi, ça nous assure bien qu'un processus n'écrasera pas la valeur d'un autre mais en faisant un set -x j'ai 2 lockfile toto.verrou, c'est bizarre car une fois qu' un verrou est crée l'autre processus ne peut l'ouvrir tant que le rm -f sur le verrou n'a pas été exécuté...
non j'avoue que je comprends plus rien dans mon livre est est marqué que le -z sert à tester si un fichier est vide, alors mon livre dit n'importe quoi..
donc comment je fais moi pour tester si un fichier est vide ou non...
donc comment je fais moi pour tester si un fichier est vide ou non...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 15:46
3 mars 2011 à 15:46
man bash, y'a que ça de vrai ;-)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 422
3 mars 2011 à 15:50
3 mars 2011 à 15:50