/ / Bash - Comment lire le contenu du fichier dans une variable, le fichier a été lu à partir du fichier de propriétés clé-> valeur? - bash, shell

Bash - Comment lire le contenu du fichier en variable, le fichier a été lu depuis le fichier de propriétés key-> value? - bash, coquille

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 № 1

Si 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")