Minux Posted February 29, 2008 Share Posted February 29, 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 Link to comment Share on other sites More sharing options...
BreizFenrir Posted February 29, 2008 Share Posted February 29, 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. Link to comment Share on other sites More sharing options...
lorinc Posted February 29, 2008 Share Posted February 29, 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 Link to comment Share on other sites More sharing options...
Minux Posted February 29, 2008 Author Share Posted February 29, 2008 Merci bcp, effectivement sans les anticotes ça fonctionne bien mieux Link to comment Share on other sites More sharing options...
theocrite Posted March 1, 2008 Share Posted March 1, 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. Link to comment Share on other sites More sharing options...
ChRiiS Posted March 2, 2008 Share Posted March 2, 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] Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.