Bonjour,
est il possible, dans le script lui meme ,de retrouver le nom du fichier ou est redirigé la sortie ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part script.sh >toto.txt
ici toto.txt
Bonjour,
est il possible, dans le script lui meme ,de retrouver le nom du fichier ou est redirigé la sortie ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part script.sh >toto.txt
ici toto.txt
Peut-être que c'est possible en inspectant les process ou les file descriptors ouverts... mais je ne connais pas la commande magique...
Salut,
Bon, ce que je vais dire est un peu hors-sujet, mais peut-être que ca correspond plus à ton besoin:
Au début de ton script, tu peux mettre par exemple:
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #!/bin/bash FICHIER=$1 exec > $FICHIER # la suite de ton code...
Du coup ca résoud le problème. Par contre, il faudra appeler ton script avec un argument (./script.sh toto.txt)
Désolé si je suis complètement à côté de la plaque. Sinon, je ne vois pas mieux que jack-ft...
Mon envie est d'envoyer un mail dans un script pour dire d'aller regarder des trucs dans la log que je cherche a preciser.
Mon probleme c'est que je n'ai pas la main sur l'appelant et que c'est en amont que la sortie est redirigée.
Et puis ca serait sympa d'avoir un truc générique pour savoir ou ca a ecrit ...
Si ,pour suivre l'idée de Jack ,quelqu'un a une idée pour trouver les fichiers associés aux descipteurs d'un process ...
Donc faute de mieux, je ferai ca à l'intérieur du script:
Edit: Qqs explications (j'ai posté un peu vite tout à l'heure):
Code : Sélectionner tout - Visualiser dans une fenêtre à part FICHIER=`readlink /proc/$$/fd/1`
$$ sera remplacé par le PID du script en cours, et on peut consulter ses File Descriptors dans /proc/no_pid/fd/ où on retrouve les standards (0, 1 et 2) qui sont des liens symboliques vers les devices correspondants ou vers les fichiers s'il y a une redirection.
Readlink permet d'afficher le fichier pointé par le lien.
Je savais bien qu'il y avait une commande magique pour ça!
Mais que rend-elle si la sortie est un pipe vers un autre process et non un fichier?
Code : Sélectionner tout - Visualiser dans une fenêtre à part script.sh | egrep -v '^$' > toto.txt
Partager