Pascal BEAUSSART

exec


La commande exec peut être utilisée pour exécuter une commande qui remplace le shell en cours, sans créer un nouveaux process : exec ls -al a*
En interactif, la sortie de la commande ls est un exit qui s'applique au shell courant et donc ferme la fenêtre en cours. Les arguments sont transmis à la commande et seul le processus en cours est affecté.

L'ouverture, la fermeture ou la copie de descripteurs de fichiers sont inclus dans la commande exec. Les descripteur 0, 1, 2 sont réservés aux entrées/sorties standard :
0 (stdin : entrée standard par défaut le clavier)
1 (stdout : sortie standard par défaut l'écran)
2 (stderr : sortie d'erreur standard par défaut l'écran)

Il vous est possible de modifier ces derniers :
FIC_LOG=/tmp/$(basename $0).log
exec 1> $FIC_LOG 2>&1 
# fichier journal avec le nom du programme
# stdout et stderr dans le fichier journal

ou d'en créer de nouveaux pour des descripteurs supérieurs à 2.
exec 3>fic_out
exec 5<fic_adresse
# ouvre fic_out en sortie sur l'unité 3
# ouvre fic_adresse en lecture sur l'unité 5
while read -u5 Nom Prenom Adresse
do if [[ $Nom = "DURAND" ]]
   then print -u3 $Prenom $Nom "habite :"
        print -u3 $Adresse
   fi
done 
# lit dans fic_adresse (-u5)

# écrit dans fic_out (-u3)

[RETOUR] [HOME]