J'ai un script bash où je redirige la sortie dans un fichier pour la journalisation.
if test -t 1; then
# stdout is a terminal
exec > $OUTPUT_FILE 2>&1
else
# stdout is not a terminal, no logging.
false
fi
J'ai un endroit plus tard où j'ai réellement besoin d'une sortie pour aller à stdout. Y a-t-il un moyen de passer outre un seul appel pour le forcer?
echo test 1>
tail -f $OUTPUT_FILE
quel et ?Réponses:
Vous pouvez mettre cette ligne plus tôt dans votre script:
Ensuite, chaque fois que vous devez envoyer quelque chose à aller à stdout:
Nettoyer:
Voici comment cela fonctionne: vous définissez un nouveau descripteur de fichier, 3, qui pointe vers le même endroit que stdout. Vous redirigez ensuite stdout si nécessaire, mais fd3 reste identique à ce qu’il était (qui est votre terminal). Lorsque vous avez terminé, supprimez simplement fd3!
Modifier:
Si vous voulez que la sortie soit à la fois dans votre fichier et dans "classic stdout", procédez comme suit:
la source