Linux bash type de redirection selon la condition [Résolu]

Signaler
-
 mortel -
Bonjour,

Je fais un script en bash sous linux et je voudrais rediriger la sortie par > ou >> selon une condition. genre

while read line
do
blabla

si condition
redirect=">"
sinon
redirect=">>"

blabla
blabla
blabla
echo tototo redirect file1
blabla
cat fileA redirect file1
blabla
blabla
blabla
echo tititi redirect file1
blabla
blabla
cat fileB redirect file1
blabla

done

y a t il un moyen de faire comme ceci sans etre trop compliqué ?

Merci

Configuration: Windows / Firefox 68.0

3 réponses

Messages postés
1458
Date d'inscription
mercredi 31 août 2011
Statut
Membre
Dernière intervention
18 août 2020
103
Hello,

Je pense que ça doit vite étre chiant a gérer dans le code si il doit faire un if sur chaque commande.

Je pense a tee comme ça :
APPEND=true

if [[ $APPEND == "true" ]]
then
teeOpt="-a"
else
teeOpt=""
fi


echo "Ma super commande" | tee $teeOpt monfichier > /dev/null
echo "Ma super commande2" | tee $teeOpt monfichier > /dev/null
echo "Ma super commande3" | tee $teeOpt monfichier > /dev/null
echo "Ma super commande4" | tee $teeOpt monfichier > /dev/null


Aprés, je suis pas sur que ça soit vraiment ce que tu attendes @mortel.

J'imagine que tu souhaites dans tout les cas retrouver l'output de l'enssemble de tes commandes dans fichier1.
Et plutot jouer avec le reset du fichier ...

si condition
echo -n > file1

while read line
do
blabla

blabla
blabla
blabla
echo tototo >> file1
blabla
cat fileA >> file1
blabla
blabla
blabla
echo tititi >> file1
blabla
blabla
cat fileB >> file1
blabla

done


A plus :)
merci Exileur

la solution par tee me convient plus que la solution if/else/fi
Messages postés
35506
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
3 septembre 2020
5 383
Salut,
si condition
redirect=">"
sinon
redirect=">>"
Où est le problème ???

if [ condition1 ] 
then commande > f1
else commande >> f2
fi

tout à fait, comme le dit Exileur, la solution de zipe31 c'est chiant à faire sur TOUTES les lignes où je redirige la sortie vers un fichier vers un fichier.
S'il n'y a que 3/4 lignes par-ci par-là c'est gerable, mais s'il y a plus ~50 lignes reparties un peu partout,c'est chiant.