Centre technique de beubeu

Aller au contenu | Aller au menu | Aller à la recherche

Fonction de substitution de plusieurs variables dans plusieurs fichiers

Fonction de substitution de plusieurs variables dans plusieurs fichiers
Exemple utilisé pour l'installation de TG.EWS ...

Informations sur les variables utilisées :
ParamName: Tableau contenant les différents paramètres à modifier
ReplaceList: Tableau contenant les différents paramètres modifié
=> ParamName[n] deviendra ReplaceList[n], n appartient à [0..N]
FileName: Tableau contenant les différents paramètres à modifier
NewList: Tableau contenant les différents paramètres modifié
=> FileName[n] deviendra NewName[n], n appartient à [0..N]
ReplaceOrder: contient les remplacements
PCounter et FCounter sont des compteurs entiers

# +==============================================+
# | Constantes |
# +==============================================+
REP_BASE='\/${CODE_ENV_MIN}\/TGprd\/oradata\/${CODE_ENV_MAJ}EWS\/'
REP_PRODUIT='\/${CODE_ENV_MIN}\/TGprd\/rdjews\/'
# +==============================================+
# | Variables |
# +==============================================+
typeset ParamName
typeset ReplaceList
typeset ReplaceOrder
typeset FileName
typeset NewName
typeset -i PCounter=0
typeset -i FCounter=0

# +==============================================+
# | Creation de l'ordre de remplacement |
# +==============================================+
ParamName[0]='\$_PWD_BASES_\$' # nom de la variable \$ protège $
ReplaceList[0]='${REP_BASE}'
ParamName[1]='\$_PWD_PRODUCT
_\$' ReplaceList[1]='${REP_PRODUIT}'
PCounter=0
while [[ ! -z ${ParamName[${PCounter}]} ]]; do
ReplaceOrder="${ReplaceOrder}s/${ParamName[${PCounter}]}/${ReplaceList[${PCounter}]}/g; "
(( PCounter = PCounter + 1 ))
done

# +==============================================+
# | Liste des fichiers a traiter (version SED) |
# +==============================================+
# NB: NewName n'est utilisé que si sed est utilisé
FileName[0]="${SQL}/00-cr_db_TGprd.ref"
NewName[0]="${SQL}/00-cr_db_TGprd.sql"
FileName[1]="${SQL}/01-Cr_tbs_TG.ref"
NewName[1]="${SQL}/01-Cr_tbs_TG.sql"
# +==============================================+
# | Remplacement des fichiers (version SED) |
# +==============================================+
FCounter=0
while [[ ! -z ${FileName[${FCounter}]} ]]; do
sed "${ReplaceOrder}" "${FileName[${FCounter}]}" >"${NewName[${FCounter}]}"
(( FCounter = FCounter + 1 ))
done

# +==============================================+
# | Liste des fichiers a traiter (version PERL) |
# +==============================================+
# NB: NewName n'est utilisé que si sed est utilisé
FileName[0]="${SQL}/00-cr_db_TGprd.sql"
FileName[1]="${SQL}/01-Cr_tbs_TG.sql"
# +==============================================+
# | Remplacement des fichiers (version PERL) |
# +==============================================+
FCounter=0
while [[ ! -z ${FileName[${FCounter}]} ]]; do
perl -p -i -e '${ReplaceOrder}' "${FileName[${FCounter}]}"
(( FCounter = FCounter + 1 ))
done