[Bourne-shell] Substitution dans une variable d'environnement

Substitution dans une variable d'environnement [Bourne-shell] - Programmation

Marsh Posté le 16-05-2001 à 01:20:14    

Mon problème est le suivant.
 
Un petit programme en shell, entouré de tous ses fichiers de données, se trouve dans un répertoire source (-contrôlé). Pour l'exécuter, on copie tout ce petit monde dans un répertoire destination (de façon automatique), on le lance, il crée tout plein de fichiers de sortie, et à la fin je veux nettoyer le répertoire destination pour ne garder que les fichiers créés par le programme. Ou, si vous préférez, supprimer du répertoire destination tous les fichiers qui se trouveaient déjà dans le répertoire source.
 
J'ai les variables suivantes:
   $dir_indir   -> Le répertoire de base source.
   $dir_outdir -> Le répertoire de base destination.
   $dir           -> Le chemin relatif du programme et de ses fichiers de données dans le répertoire de base -- que ce soit dans la source ou, une fois copiés, dans la destination.
 
Exemple:
Mon programme et ses fichiers de données sont dans j:/dveTest/jbsearch/SearchSimple/, et le programme est exécuté dans j:/testLog/jbsearch/SearchSimple/. J'ai alors:
   $dir_indir   = j:/dveTest
   $dir_outdir = j:/testLog
   $dir          = jbsearch/SearchSimple
 
J'ai réussi à écrire ce que je veux faire en Korn-shell :

Code :
  1. for dir_file in `find $dir_indir/$dir/ -type f`; do
  2.       echo "/bin/rm -f ${dir_file/'"$dir_indir"'/'"$dir_outdir"'}"
  3.   done


 
mais ce type de substitution ne marche pas en shell de Bourne (car c'est du pur Korn-shell) et ce dernier m'est imposé. Help !
 
J'ai essayé de faire la substitution de la valeur de $dir_indir par celle de $dir_outdir avec un sed (un truc du genre "sed -e 's/$dir_indir/$dir_outdir/g'" ), mais le problème, c'est qu'il y un mélange entre les slashs contenus dans les variables d'environnement est ceux de sed.
 
PS: Dans la boucle shell ci-dessus, si vous connaissez un moyen d'extraire $dir_indir de $dir_file, et d'obtenir le chemin relatif du fichier $dir_file, ça me va aussi. $dir_outdir est mon répertoire courant à ce moment-là...

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

Reply

Marsh Posté le 16-05-2001 à 01:20:14   

Reply

Marsh Posté le 16-05-2001 à 04:01:56    

Merci à tous les lecteurs, j'ai trouvé.

Code :
  1. for dir_file in `find ${dir_indir}/${dir}/ -type f`; do
  2.       outdir_file=`echo ${dir_file} | sed -e 's#'${dir_indir}'#'${dir_outdir}'#g'`
  3.       echo "/bin/rm -f ${outdir_file}"
  4.   done

Reply

Marsh Posté le 16-05-2001 à 04:26:12    

pov' Biface... la seule fois ou il pose une question, personne ne lui répond :(
;)


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 16-05-2001 à 09:27:57    

Faut dire que passer d'un shell Unix à un autre, c'est plutôt la misère.

Reply

Marsh Posté le 16-05-2001 à 10:55:32    

Ca c'est clair, moi je suis passé d'un korn shell Unix au bash Linux j'ai trop galéré :)


---------------
"There's not such a thing as a stupid question, only stupid people..."
Reply

Sujets relatifs:

Leave a Replay

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