Linux bash type de redirection selon la condition

Résolu
mortel -  
 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

  1. Exileur Messages postés 1621 Date d'inscription   Statut Membre Dernière intervention   150
     
    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
    1. mortel
       
      merci Exileur

      la solution par tee me convient plus que la solution if/else/fi
      0
  2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,
    si condition
    redirect=">"
    sinon
    redirect=">>"
    Où est le problème ???

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

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