[KSH] - Probleme de condition
Résolu
gorkimat
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
gorkimat Messages postés 70 Date d'inscription Statut Membre Dernière intervention -
gorkimat Messages postés 70 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Au risque de passer pour un neuneu, j'avoue cette condition ne fait pas ce que je souhaite. En resumer, je voudrais tester dans 3 répertoires distinct si il y a au moins un fichier *_EOF. S'il y en a au moins 1, je lance le traitement.
Ex :
REP1/*_EOF (non)
REP2/*_EOF (non)
REP3/*_EOF (non)
=>Je ne fais rien.
REP1/*_EOF (non)
REP2/*_EOF (oui)
REP3/*_EOF (non)
=>Je lance le traitement.
Voici le code que j'utilise :
Je precise que je mets bien deux crochets ouvrants et fermants, mais si je le met comme ça dans le message, il me creer un lien ??
Si quelqu'un pouvais m'aider ce serait sympa.
Merci d'avance
Au risque de passer pour un neuneu, j'avoue cette condition ne fait pas ce que je souhaite. En resumer, je voudrais tester dans 3 répertoires distinct si il y a au moins un fichier *_EOF. S'il y en a au moins 1, je lance le traitement.
Ex :
REP1/*_EOF (non)
REP2/*_EOF (non)
REP3/*_EOF (non)
=>Je ne fais rien.
REP1/*_EOF (non)
REP2/*_EOF (oui)
REP3/*_EOF (non)
=>Je lance le traitement.
Voici le code que j'utilise :
if [ ! -f ${DIR_TAMPON_REF}/*_EOF && ! -f ${DIR_TAMPON_IMG}/*_EOF && ! -f ${DIR_TAMPON_IMG}/*_EOF ];then echo "rien a traiter" else echo "des fichiers a traiter" fi
Je precise que je mets bien deux crochets ouvrants et fermants, mais si je le met comme ça dans le message, il me creer un lien ??
Si quelqu'un pouvais m'aider ce serait sympa.
Merci d'avance
A voir également:
- [KSH] - Probleme de condition
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Condition optimale téléphone ✓ - Forum Mobile
- !/Bin/ksh - Forum Shell
- Excel champ calculé avec condition - Forum Excel
4 réponses
Hi
Je pense que les wild card *_EOF ne fonctionnent pas comme esperé dans un test.
Pourquoi ne pas utiliser la commande find et tester si elle trouve un fichier EOF ?
Je pense que les wild card *_EOF ne fonctionnent pas comme esperé dans un test.
Pourquoi ne pas utiliser la commande find et tester si elle trouve un fichier EOF ?
Salut,
Et en testant le code retour d'un "grep" via un "ls -R" ???
Et en testant le code retour d'un "grep" via un "ls -R" ???
$ ls -R .: data/ text_ABC ./data: repA/ repB/ repC/ repD/ ./data/repA: file1_EOF file1.txt file2_EOF file2.txt ./data/repB: jp.txt ./data/repC: file1_EOF file1.txt file2_EOF file2.txt ./data/repD: $ ls -R data/ | grep _EOF >/dev/null; if [ "$?" == "0" ];then echo "OK";else echo "NOK";fi OK $ ls -R data/ | grep _ABC >/dev/null; if [ "$?" == "0" ];then echo "OK";else echo "NOK";fi NOK $;-))
Bonjour jipicy,
Je vais finir par croire que c'est toi qui à inventé le shell ;-)
Sinon, ta solution est super, mais puis-je en profiter pour te poser une question par rapport à ta solution ?
Est-ce qu'on peut forcer le grep à ne rechercher que ce qui se termine par _EOF ?
Je m'explique : Les utilisateurs ont souvent comme reflex, pour supprimer un flag, de le renommer en *_EOF-- par exemple. Dans ce cas, je risque donc de les traiter quand même.
En tous les cas merci à tous pour votre aide.
Je vais finir par croire que c'est toi qui à inventé le shell ;-)
Sinon, ta solution est super, mais puis-je en profiter pour te poser une question par rapport à ta solution ?
Est-ce qu'on peut forcer le grep à ne rechercher que ce qui se termine par _EOF ?
Je m'explique : Les utilisateurs ont souvent comme reflex, pour supprimer un flag, de le renommer en *_EOF-- par exemple. Dans ce cas, je risque donc de les traiter quand même.
En tous les cas merci à tous pour votre aide.
grep "_EOF$"Un exemple :
$ ls -R .: data/ essai.sh* text_ABC ./data: repA/ repB/ repC/ repD/ ./data/repA: file1_EOF file1.txt file2_EOF file2.txt file3_EOF~ ./data/repB: jp.txt ./data/repC: file1_EOF file1.txt file2_EOF file2.txt ./data/repD: $ ls -R | grep "_EOF$" file1_EOF file2_EOF file1_EOF file2_EOF $;-))
Bonjour,
Désolé, je sais que j'avais mis le post en résolu, mais il me resterais une petite question par rapport à la réponse de jipicy.
Est-ce qu'on peut mettre le contenu d'une variable dans une expression réguliere ?
Ex :
Quand je passe cette commande, il ne trouve rien, alors qu'il y a bien un fichier de cette forme :-(
Merci pour votre aide,
Gorki
Désolé, je sais que j'avais mis le post en résolu, mais il me resterais une petite question par rapport à la réponse de jipicy.
Est-ce qu'on peut mettre le contenu d'une variable dans une expression réguliere ?
Ex :
grep '^${SelRef}\.[0-9][0-9][0-1][0-9]$'
Quand je passe cette commande, il ne trouve rien, alors qu'il y a bien un fichier de cette forme :-(
Merci pour votre aide,
Gorki
re-
Essaye :
Essaye :
grep -E ${SelPre}'_(BILL|CONT)(\.[0-9]{4})*$';-))
Salut jipicy,
J'ai essayer ta commande (en ajoutant /usr/xpg4/bin devant le grep, est-ce c'est normal ? et en modifiant legerement l'expression :
Tu aurais une idée pour pas qu'il me prenne TOTATASELECTIONS_CONT ?
Merci pour ton soutient
J'ai essayer ta commande (en ajoutant /usr/xpg4/bin devant le grep, est-ce c'est normal ? et en modifiant legerement l'expression :
${SelPre}'_(BILL\.[0-9]{4}|CONT)*$'), elle fonctionne à mervaille sauf dans un cas :
bash-3.00$ test.ksh SELECTIONS_BILL.0704 : Fichier à traiter SELECTIONS_CONT : Fichier à traiter TOTATASELECTIONS_CONT : Fichier à traiter PREIMPRIME_BILL.0704 : Fichier à traiter PREIMPRIME_CONT : Fichier à traiter
Tu aurais une idée pour pas qu'il me prenne TOTATASELECTIONS_CONT ?
Merci pour ton soutient
Ben c'est bizarre :-\
Chez moi ça marche :
Chez moi ça marche :
[jp@MDK rep]$ ls PREIMPRIME_BILL.20 PREIMPRIME_BILL.28 PREIMPRIME_BILL.4055 SELECTIONS_BILL.1001 SELECTIONS_BILL.1009 PREIMPRIME_BILL.21 PREIMPRIME_BILL.29 PREIMPRIME_BILL.4056 SELECTIONS_BILL.1002 SELECTIONS_BILL.1010 PREIMPRIME_BILL.22 PREIMPRIME_BILL.30 PREIMPRIME_BILL.4057 SELECTIONS_BILL.1003 SELECTIONS_CONT PREIMPRIME_BILL.23 PREIMPRIME_BILL.4050 PREIMPRIME_BILL.4058 SELECTIONS_BILL.1004 TOTATASELECTIONS_CONT PREIMPRIME_BILL.24 PREIMPRIME_BILL.4051 PREIMPRIME_BILL.4059 SELECTIONS_BILL.1005 PREIMPRIME_BILL.25 PREIMPRIME_BILL.4052 PREIMPRIME_BILL.4060 SELECTIONS_BILL.1006 PREIMPRIME_BILL.26 PREIMPRIME_BILL.4053 PREIMPRIME_CONT SELECTIONS_BILL.1007 PREIMPRIME_BILL.27 PREIMPRIME_BILL.4054 SELECTIONS_BILL.1000 SELECTIONS_BILL.1008 [jp@MDK rep]$ SelPre=SELECTIONS [jp@MDK rep]$ ls * | grep -E ${SelPre}'_(BILL|CONT)(\.[0-9]{4})*$' SELECTIONS_BILL.1000 SELECTIONS_BILL.1001 SELECTIONS_BILL.1002 SELECTIONS_BILL.1003 SELECTIONS_BILL.1004 SELECTIONS_BILL.1005 SELECTIONS_BILL.1006 SELECTIONS_BILL.1007 SELECTIONS_BILL.1008 SELECTIONS_BILL.1009 SELECTIONS_BILL.1010 SELECTIONS_CONT TOTATASELECTIONS_CONT [jp@MDK rep]$;-))
Déjà, merci pour ta réponse.
Effectivement, je me suis demandé si cela ne venait pas de là, mais lorsque je fais :
le test fonctionne très bien.
Sinon, si je ne trouve pas de solution, je ferais des find, mais je trouve ça plus lourd que le test '-f'.
En tous les cas, merci pour ta réponse rapide.