Linux bash type de redirection selon la condition

Résolu/Fermé
mortel - 26 juil. 2020 à 16:10
 mortel - 26 juil. 2020 à 19:56
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

Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
Modifié le 26 juil. 2020 à 18:06
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 :)
1
merci Exileur

la solution par tee me convient plus que la solution if/else/fi
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 juil. 2020 à 16:31
Salut,
si condition
redirect=">"
sinon
redirect=">>"
Où est le problème ???

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

0
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.
0