J'ai un fichier de propriété clé-> valeur (my.prop) avec un tel contenu:
ROOT_PATH = /opt/user1/
REL_PATH = data/folder1/
CONF_FILENAME = my.conf
Dans mon script bash, je lis simplement ce fichier, comme ceci:
#!/bin/bash
PROP_FILE="my.prop"
ROOT_PATH =""
REL_PATH=""
CONF_FILENAME=""
while read -r key eq value; do
case $key in
"ROOT_PATH")
ROOT_PATH=${value}
;;
case $key in
"REL_PATH")
REL_PATH=${value}
;;
case $key in
"CONF_FILENAME")
CONF_FILENAME=${value}
;;
esac
done < $PROP_FILE
Après cela, je voudrais ouvrir la voie à my.conf fichier et lire son contenu à une variable, comme ceci:
CONF_FULL_PATH=$ROOT_PATH$REL_PATH$CONF_FILENAME
CONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}`
Si j'imprime CONF_FULL_PATH
variable, il y aura une corbeille à l'intérieur (parties des trois sous-chemins). Et à cette ligneCONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}`
J'aurai ce message d'erreur - : Aucun fichier ou répertoire tel / dossier1 /
Donc, ma question est, comment pourrais-je bien former le chemin vers my.conf fichier et mettre son contenu à une variable spécifique? J'ai déjà essayé source
en remplacement de la boucle while. Aussi pour construire une chaîne de chemin d'accès appropriée, j'ai utilisé ces instructions:
$(dirname $ROOT_PATH)/$(dirname REL_PATH)/$(basename $CONF_FILENAME)
mais cela semble étrange pour mon point de vue.
Toute aide est la bienvenue!
Réponses:
1 pour la réponse № 1Si vous supprimez les espaces de votre my.prop
fichier, vous pouvez utiliser source
(ou .
) pour lire les variables à l'intérieur. Cela le rendra beaucoup plus facile.
my.prop:
ROOT_PATH=/opt/user1/
REL_PATH=data/folder1/
CONF_FILENAME=my.conf
Ensuite, vous pouvez les utiliser directement dans votre script:
#!/bin/bash
. my.prop
CONF_FULL_PATH="${ROOT_PATH}${REL_PATH}${CONF_FILENAME}"
CONF_FILE_CONTENT=$(cat "$CONF_FULL_PATH")