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ď č. 1Ak 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")