Bonjour à tous,
dans un script bash, je cherche à fusionner un fichier de paramétrage avec des valeurs saisies par l'opérateur :
Les champs de fusion sont NOM_BDD et BDD_DIR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3$more CreateBDD.ddl CREATE DATABASE NOM_BDD ON BDD_DIR
J'utilise pour ca dans mon script bash une fonction :
que j'invoque ainsi:
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 }
Ca marche très bien sauf dans le cas où la valeur contient des "/", sed me renvoie une erreur.
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
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
Partager