/ / Bash - Jak odczytać zawartość pliku do zmiennej, plik został odczytany z pliku właściwości key-> value? - bash, shell

Bash - Jak odczytać zawartość pliku do zmiennej, plik został odczytany z pliku właściwości key-> value? - bash, shell

Mam jeden plik właściwości key-> value (my.prop) z taką treścią:

ROOT_PATH = /opt/user1/
REL_PATH = data/folder1/
CONF_FILENAME = my.conf

W moim skrypcie bash po prostu czytam ten plik, tak jak poniżej:

#!/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

Potem chciałbym stworzyć ścieżkę do my.conf plik i przeczytaj jego zawartość do jakiejś zmiennej, takiej jak ta:

CONF_FULL_PATH=$ROOT_PATH$REL_PATH$CONF_FILENAME
CONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}`

Jeśli wydrukuję CONF_FULL_PATH zmienna będzie zawierała trochę śmieci (części wszystkich trzech ścieżek podrzędnych). I na tej liniiCONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}` Otrzymam ten komunikat o błędzie - : Brak takiego pliku lub reżyserii / folderu1 /

Tak więc moje pytanie brzmi: jak mogę właściwie utworzyć ścieżkę do my.conf plik i umieścić jego zawartość w określonej zmiennej? Próbowałem już source polecenie jako zamiennik pętli while. Również do zbudowania odpowiedniego ciągu ścieżek użyłem tych instrukcji: $(dirname $ROOT_PATH)/$(dirname REL_PATH)/$(basename $CONF_FILENAME) ale z mojego punktu widzenia wygląda to dziwnie.

Każda pomoc będzie świetna!

Odpowiedzi:

1 dla odpowiedzi № 1

Jeśli usuniesz spacje ze swojego my.prop możesz użyć source (lub .) odczytać zmienne znajdujące się w nim. To znacznie ułatwi.

my.prop:

ROOT_PATH=/opt/user1/
REL_PATH=data/folder1/
CONF_FILENAME=my.conf

Następnie możesz użyć ich bezpośrednio w swoim skrypcie:

#!/bin/bash
. my.prop
CONF_FULL_PATH="${ROOT_PATH}${REL_PATH}${CONF_FILENAME}"
CONF_FILE_CONTENT=$(cat "$CONF_FULL_PATH")