Aide pour écrire un shell unix

Fermé
daouda1 Messages postés 3 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 27 décembre 2007 - 27 déc. 2007 à 16:33
daouda1 Messages postés 3 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 27 décembre 2007 - 27 déc. 2007 à 17:42
Bonjour,


Pouvez-vous m'aider à écrire un shell unix qui effectuerait les opérations suivantes ?

1- Lire une chaîne de caractères dans un fichier
2- En fonction de la valeur retournée, déplacer ce fichier dans un répertoire donné
3- Gérer les exceptions, c'est à dire que si test ne renvoie aucune valeur dans une liste déterminée, déplacer le fichier dans un répertoire déterminé.

EXEMPLE

Je reçois tous les jours des fichiers d'un assureur mais ces fichiers sont nommés automatiquement par le système d'envoi et je ne peux pas présager du contenu fonctionnel du fichier

Par exemple si je reçois le fichier 124xwq4587.xml, mon programe devrait tester par exemple
- si le fichier contient la chaîne "CODE_MESSAGE F999' alors fonctionnellement, on saura que c'est un fichier qui contient les encaissements; le programme le déplace donc vers le répertoire encaissement
- si la valeur ramenée n'est pas dans une liste donnée laors le fichier sera envoyé dans le repertoire rejet

merci d'avance de votre aide
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 déc. 2007 à 17:05
Salut,

1- Lire une chaîne de caractères dans un fichier
grep "CODE_MESSAGE F999" 124xwq4587.xml
retval=$?
2- En fonction de la valeur retournée, déplacer ce fichier dans un répertoire donné
if [ "$retval" = 0 ]
then
cp ...
3- Gérer les exceptions, c'est à dire que si test ne renvoie aucune valeur dans une liste déterminée, déplacer le fichier dans un répertoire déterminé.
else
cp ...
fi
A adapter, mais tu auras certainement besoin d'autres fonctions, notamment si tu dois tester plusieurs valeur de chaînes et copier les fichiers dans plus d'un répertoire.
0
daouda1 Messages postés 3 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 27 décembre 2007
27 déc. 2007 à 17:14
bonjour

Merci de ta réponse.

Mais je voulais savoir comment faire

Si la valeur est dans la liste ( F999, F888, F777, ...)
alors
si la valeur = F999
alors copier le fichier dans le répertoire ENCAISSEMENT
si la valeur = F888
alors copier le fichier dans le répertoire RELEVES

sinon
si la valeur n'est pas dans la liste ( F999, F888, F777, ...)
alors copier dans le fichier REJET
.........
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 déc. 2007 à 17:39
valeur=$(egrep 'CODE_MESSAGE F[0-9]{3}' fichier)
retval=$?
if [ "$retval" = 0 ]
then
case "${valeur#* }" in
F999)   cp fichier /repertoire/ENCAISSEMENT/
            ;;
F888)   cp fichier /repertoire/RELEVES/
            ;;
F777)   ...
            ;;
Fxxx)    ...
            ;;
*)         echo "ERREUR"
            exit 5
            ;;
esac
else
cp fichier /repertoire/REJET/
fi
;-))
0
daouda1 Messages postés 3 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 27 décembre 2007
27 déc. 2007 à 17:42
je te remercie beaucoup

L'union fait la force !!!!!!
0