Bonjour à tous,
dans un script bash, je cherche à fusionner un fichier de paramétrage avec des valeurs saisies par l'opérateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
$more CreateBDD.ddl
CREATE DATABASE NOM_BDD
ON BDD_DIR
Les champs de fusion sont NOM_BDD et BDD_DIR

J'utilise pour ca dans mon script bash une fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
fusion_parametre() {
# @param $1 Fichier a fusionner
# @param $2 Chaine a rechercher
# @param $3 Valeur a inserer
        FUSION_FICHIER=$1
        FUSION_CHAMP=$2
        FUSION_VALEUR=$3
        sed -i s/$FUSION_CHAMP/"$FUSION_VALEUR/" $FUSION_FICHIER
}
que j'invoque ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
read NOM_BDD
fusion_parametre NOM_BDD $NOM_BDD CreateBDD.ddl
read BDD_DIR
fusion_parametre BDD_DIR $BDD_DIR CreateBDD.ddl
Ca marche très bien sauf dans le cas où la valeur contient des "/", sed me renvoie une erreur.
Comme les valeurs sont demandées par le script à l'opérateur, je voudrais trouver un moyen d'ajouter automatiquement un antislash pour échapper les slashes, de telle sorte que "/data/bdds/base1/" soit converti en "\/data\/bdds\/base1\/" et que sed puisse le traiter.
Des idées ??

Merci par avance
Estats