/ / Bash - Ako načítať obsah súboru do premennej, súbor bol načítaný zo súboru vlastností kľúča> hodnoty? - bash, škrupina

Bash - Ako čítať obsah súboru do premennej, súbor bol načítaný zo súboru key-> value property? - bash, škrupina

Mám jeden súbor vlastností kľúč -> hodnota (my.prop) s takýmto obsahom:

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

Vo svojom bash skripte som jednoducho prečítal tento súbor, napríklad takto:

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

Potom by som chcel sformovať cestu k my.conf súbor a načítať jeho obsah do nejakej premennej, napríklad takto:

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

Ak vytlačím CONF_FULL_PATH premenná bude mať vnútri nejaký odpad (časti všetkých troch čiastkových ciest). A na tomto riadkuCONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}` Zobrazí sa toto chybové hlásenie - : Žiadny takýto súbor alebo adresár / priečinok1 /

Moja otázka teda znie, ako by som mohol správne vytvoriť cestu my.conf súbor a vložiť jeho obsah do nejakej konkrétnej premennej? Už som to skúsil source príkaz ako náhrada za while slučku. Na vytvorenie správneho reťazca cesty som použil aj tieto vyhlásenia: $(dirname $ROOT_PATH)/$(dirname REL_PATH)/$(basename $CONF_FILENAME) ale z môjho pohľadu to vyzerá zvláštne.

Akákoľvek pomoc by bola skvelá!

odpovede:

1 pre odpoveď č. 1

Ak odstránite medzery z priečinka my.prop súbor, ktorý môžete použiť source (alebo .) na čítanie premenných v ňom. Takto to bude oveľa jednoduchšie.

my.prop:

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

Potom ich môžete použiť priamo vo svojom skripte:

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