En fait, dans ces deux cas, le "echo" qui est utilisé est certainement une commande interne du shell. Sous Debian 7, le shell par défaut était certainement bash alors que sous Debian 8 il s'agit vraisemblablement de dash (le changement est fait pour des raisons de performances et d'empreinte mémoire : dash est plus restreint mais bien plus léger que bash).
Du coup, on observe parfois des différences de comportement, comme pour echo (dans le cas de dash, echo ne comprend qu'une seule option, -n, et interprète systématiquement les séquences \...).
La solution pourrait donc être de simplement supprimer cette option -n, mais à ce moment-là, ça ne fonctionnera plus avec bash.
Tu peux aussi utiliser explicitement la commande externe /bin/echo avec l'option -n. Mais là encore, le résultat n'est pas garanti à 100%.
Ou alors, tu testes pour savoir si le echo utilisé a besoin du -n ou pas : if [ "$(echo '\n')" = '\n' ]; then ECHO="echo -e" ; else ECHO=echo; fi
puis tu utilises $ECHO à la place de echo pour obtenir le résultat désiré.
Mais la meilleure solution est peut-être d'utiliser printf à la place d'echo : printf "\033円[1;31m ERR - génération du dh pour le certificat\n"
devrait marcher à tous les coups.
# il y a echo et echo...
Posté par JJD . En réponse au message Paquet debian 8 et commande echo. Évalué à 7.
Salut,
En fait, dans ces deux cas, le "echo" qui est utilisé est certainement une commande interne du shell. Sous Debian 7, le shell par défaut était certainement bash alors que sous Debian 8 il s'agit vraisemblablement de dash (le changement est fait pour des raisons de performances et d'empreinte mémoire : dash est plus restreint mais bien plus léger que bash).
Du coup, on observe parfois des différences de comportement, comme pour echo (dans le cas de dash, echo ne comprend qu'une seule option, -n, et interprète systématiquement les séquences \...).
La solution pourrait donc être de simplement supprimer cette option -n, mais à ce moment-là, ça ne fonctionnera plus avec bash.
Tu peux aussi utiliser explicitement la commande externe /bin/echo avec l'option -n. Mais là encore, le résultat n'est pas garanti à 100%.
Ou alors, tu testes pour savoir si le echo utilisé a besoin du -n ou pas :
if [ "$(echo '\n')" = '\n' ]; then ECHO="echo -e" ; else ECHO=echo; fipuis tu utilises $ECHO à la place de echo pour obtenir le résultat désiré.
Mais la meilleure solution est peut-être d'utiliser printf à la place d'echo :
printf "\033円[1;31m ERR - génération du dh pour le certificat\n"devrait marcher à tous les coups.
À+,
JJD