[Résolu] Test chaine de caractères avec Shell : Help !

Test chaine de caractères avec Shell : Help ! [Résolu] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 08-07-2009 à 10:32:51    

Bonjour,
 
Je travaille sur un petit script qui a la charge de vérifier la présence de dossiers dans un autre dossier.
 
Récemment j'ai voulu l'améliorer mais je bloque sur un test de chaine de caractères...
 
En gros, le dossier principal dans lequel est fait le test se nomme "Transit", et peut contenir deux types de dossiers :
 
- des dossiers nommés "ENVOI_DU_date"
- et des dossiers ayant pour nom "A_SUPPRIMER_date" (en cas de problèmes)
 
Actuellement, que ce soit l'un ou l'autre, les deux types de dossiers sont traités de la même manière, et j'ai voulu modifier ça justement de façon à supprimer tous les A_SUPPRIMER sans les traiter.
 
Voilà comment je procède :
 

Code :
  1. cd /TEMP/Transit
  2. LISTDOS=`find . -mindepth 1 -maxdepth 1 -type d 2>/dev/null`
  3. NB_DOS=`find . -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l`
  4. date +%d/%m/%Y/%R >>/usr/local/bin/Suivi_OVH/OVH.log
  5. if [ $NB_DOS -gt 0 ]  #Si des dossiers sont présents
  6. then
  7.       for DOS in $LISTDOS
  8.       do
  9.          if [ $DOS = "A_SUPPRIMER_000000" ]  #c'est un dossier de test, les 000000 sont voulus pour que ce soit plus simple
  10.          then
  11.             for NB_DOS in $LISTDOS
  12.             do
  13.                echo "GRANDE Suppression du dossier $DOS" >>/usr/local/bin/Suivi_OVH/OVH.log
  14.                rm -rf $DOS
  15.                continue
  16.             done
  17. #Le if se termine plus loin


 
Voilà ce que j'essaie de faire, par contre j'ai l'impression que le script ne passe pas là dedans :

Code :
  1. if [ $DOS = "A_SUPPRIMER_000000" ]


 
Et du coup pour l'instant il ne fait pas de différence entre les dossiers "normaux" et ceux du type A_SUPPRIMER.  
 
Quelqu'un aurait-il une idée s'il vous plaît?
 
Je suis bloqué actuellement et j'ai fait plusieurs tests pas très concluants.
 
Peut-être que mes instructions ne sont pas tout à fait exactes?
 
J'apprécie toute aide !


Message édité par Adaron le 10-07-2009 à 12:02:50
Reply

Marsh Posté le 08-07-2009 à 10:32:51   

Reply

Marsh Posté le 09-07-2009 à 11:40:21    

J'ai trouvé.
 
Le code :
 

Code :
  1. if [ $DOS = "A_SUPPRIMER_000000" ]


 
Est devenu :
 

Code :
  1. if [[ "${DOS}" =~ .*A_SUPPRIMER_000000$ ]]


 
Ca fonctionne :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed