Bash:
Écrire sur l'erreur standard
Comment faire :
En Bash, vous utilisez >&2
pour rediriger la sortie vers stderr. Voici un exemple de base :
echo "Ceci est un message normal"
echo "Ceci est un message d'erreur" >&2
L’exécution de ce script affichera les deux messages dans la console, mais si vous les redirigez, vous pouvez séparer le stdout du stderr. Par exemple :
bash script.sh > output.txt 2> error.txt
output.txt
contiendra "Ceci est un message normal"
, tandis que error.txt
capturera "Ceci est un message d'erreur"
.
Pour un cas d’utilisation pratique, considérez un script qui traite des fichiers et signale une erreur si un fichier n’existe pas :
filename="exemple.txt"
if [ ! -f "$filename" ]; then
echo "$filename n'existe pas !" >&2
exit 1
else
echo "Traitement de $filename"
fi
Exemple de sortie directement dans la console lorsque exemple.txt
n’existe pas :
exemple.txt n'existe pas !
Il n’existe pas de bibliothèques tierces directes en Bash pour gérer stderr, car la redirection est nativement prise en charge et généralement suffisante. Cependant, pour des applications complexes, des cadres de journalisation ou des outils de journalisation externes comme syslog
ou log4bash
peuvent être incorporés pour gérer aussi bien stdout que stderr de manière plus efficace.