Minux Posté(e) le 29 février 2008 Partager Posté(e) le 29 février 2008 Bonjour à tous, je me suis lancé dans la création d'un petit script bash pour faire appel à un petit utilitaire java que j'utilise souvent et qui nécessite quelques paramètres de lancement, et que j'ai la flemme de retaper à chaque fois j'essaie de faire un log du résultat, mais systématiquement le fichier log se retrouve avec un ? à la fin de son extension ... voici l'extrait de mon script qui lance la commande et créé le log : echo `java -jar /chemin/utilitaire.jar -s -OK /chemin/*.txt` > fichier.log Quelle est mon erreur ? Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
BreizFenrir Posté(e) le 29 février 2008 Partager Posté(e) le 29 février 2008 Dans ton exemple j'aurais tendance à dire que le echo et les antiquotes sont superflus. La fin de la ligne redirige les caractères normalement écrits vers la sortie standard dans le fichier fichier.log, cela ne fait pas partie intégrante d'une manière spécifique d'appeler echo, mais marche avec toute commande. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 29 février 2008 Partager Posté(e) le 29 février 2008 même pire que superflu, c'est pas top, car echo va devoir attendre la fin du programme en antiquote pour écrire sa sortie dans le fichier. Les antiquote ouvrent un nouveau shell, y exécutent le programme, pendant ce temps, le shell père est bloqué dans l'attente de la fin du fils. Essayez ça : echo ` for i in $(seq 1 10); do sleep 1; echo $i; done;` C'est relativement convainquant Lien vers le commentaire Partager sur d’autres sites More sharing options...
Minux Posté(e) le 29 février 2008 Auteur Partager Posté(e) le 29 février 2008 Merci bcp, effectivement sans les anticotes ça fonctionne bien mieux Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 1 mars 2008 Partager Posté(e) le 1 mars 2008 Tiens, c'est marrant, dans ton exemple lorinc, la partie qui est dans les backquotes ne comporte pas de retour à la ligne. Je me demande pourquoi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ChRiiS Posté(e) le 2 mars 2008 Partager Posté(e) le 2 mars 2008 Effectivement, même si on les force, l'echo les vire: echo ` for i in $(seq 1 10); do sleep 1; echo -e "$i\n"; done;` Bizarre, non ? [edit] Par contre: echo -e ` for i in $(seq 1 10); do sleep 1; echo "$i\n"; done;` Mais toujours un résultat étrange (décalage d'un). Enfin bref s'il ne prend pas les \n c'est aussi par ce que: -e: enable interpretation of backslash escapes -E: disable interpretation of backslash escapes (default) Je sais pas, c'est bizarre... [/edit] Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.