Téléchargement
illégal
Posez votre question Signaler

Comment rediriger la sortie standard [Résolu]

bheadman 105Messages postés 1 septembre 2007Date d'inscription - Dernière réponse le 13 nov. 2008 à 15:06
Bonjour,
Bon c'est un peu plus compliqué que ça en a l'aire, car je connais les principes d'entrée sortie standard :
1 entrée standard (ex :clavier) > prog.sh 1> sortie standard (ex: écran)
2> sortie standard des erreurs (le plus souvent idem que "1>")
Mon problème c'est que pour débeuguer un prog je l'éxecute de la manière suivante :
sh -x prog.sh
Mais ce dernier étant relativement long je ne vois pas la totalité du retour sur mon shell (putty). Je souhaitais donc savoir comment rediriger la sortie "std", de ce mode de fonctionnement précis, vers un fichier texte.
Pour info j'ai déjà essayé ceci :
sh -x prog.sh > tralala.txt
mais je ne récupère que la sortie std de ma commande "grep" qui se trouve dans le prog
Cordialement.
BHeaDMaN
Lire la suite 

Comment rediriger la sortie standard »

6 réponses
Réponse
+1
moins plus
> ca ecrase a chaque fois le fichier

>> " append" ajoute des lignes sans effacer les autres
bheadman- 11 juil. 2008 à 15:04
de toute façon je fait un "echo>tralala.txt" avant chaque traitement :D afin de ne pas avoir un fichier de 300Mo en moins de temps qu'il ne faut pour l'écrir.
Ajouter un commentaire
Réponse
-1
moins plus
Redirection de la sortie standard vers la sortie d'erreur :

sh -x prog.sh > tralala.txt 2>&1
Ajouter un commentaire
Réponse
-2
moins plus
Surement une réponse stupide mais comme j'ai pas la même approche du problème on sait jamais..

Et si tu enlevais le grep de ton programme pour avoir tout sur le txt...puis filtrer après ?
bheadman- 11 juil. 2008 à 15:10
mon grep fait partie du script est en est une fonction indispensable, c'est volontairement que je n'ai pas redirigé le sortie std (1 et 2 pour ceux qui suivent :D) et que donc celui-ci affiche son résultat dans le shell.

vioci en exemple le gros du programme, hors mis les déclarations de variable et autre test en tout genre :

while [ ${Line} -lt ${Num_Line} ]
do
User_Path=`nawk -v x=${Line} 'NR == x { print }' ${File_Login}`
echo ${User_Path} | egrep "${User_List}" <<----- ici j'ai omis, volontairement, la chaine "1> /dev/null 2>&1"
retval=$?
if [ $retval != 0 ]
then
echo ${User_Path} >> ${File_temps}
else
User_Ribfou=`echo ${User_Path} | nawk -F":" '{ print $5 |"cut -c1-3" }'`
if [ ${User_Ribfou} != usr ]
then
echo ${User_Path} | sed 's/:'"${User_Ribfou}"'/:usr/g' >> ${File_temps}
fi
fi
Line=`expr ${Line} + 1`
done
Ajouter un commentaire
Réponse
-2
moins plus
Honte sur moi,

une fois n'est pas coutume ma plume (ou mon clavier) à été plus vif que mon esprit.

Voici la solution à ce pitit problème :

sh -x prog.sh 2> tralala.txt

En réfléchissant 30s (en relisant mon précédent poste) je me suis dit que le "-x" étant un mode débeugue permettant de voir toutes erreurs, il serait fort probable que la sortie std soit la même que pour les erreurs et BINGO.

J'espère au moins que ce petit bout poste serviras à quelqu'un d'autre.

Cdlt.
BHeaDMaN
Ajouter un commentaire
Ce document intitulé « Comment rediriger la sortie standard » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?