Bonsoir,

j'ai vraiment du mal à comprendre comment fonctionne les redirections, en dehors du basique > 2>&1 ça se corse.

Dans une fonction, qui déroule des étapes, je veux que soit redirigé stdout vers un fichier (que ce soit fifo ou pas, pour l'instant peu importe).
À la fin de cette fonction, j'imagine rétablir stdout dans le descripteur dédié: 1
je voyais ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
function une {
    # début de fonction
    exec 3>&1 # sauvegarde de 1 dans 3 nouvellement créé
    exec > fic # ou "$fic_version_variable" 
    # là, le moindre echo devrait aller dans fic
    echo "mais comment ça marche ?!"
    echo "tout est tellement puissant en prog, mais en bourne shell aussi pas mal ... si on maîtrise"
    # ci-dessous fin de fonction
    exec 1>&3 # récupère 1 à partir de &3
    exec 3>&- # ferme &3
    # fin de l'histoire,  ressort sur le terminal et pas dans fic !
    echo "bingo ?"
}
Je voudrais déjà être sûr d'avoir bien compris qu'en théorie, cette syntaxe là fonctionne, qu'elle veut bien dire ce que j'ai compris qu'elle disait.

Après j'approfondirai parce que je ne fais pas de simple echo, j'envoie une chaîne dans une autre fonction, et en plus idéalement dans un fichier fifo. (Et je me demande si les exec se répercutent dans la fonction appelée (une fonction deux) de par les exec (redirections) exécuter dans la fonction mère ou pas, mais d'abord, tel quel est ce que ça doit fonctionner ?).