我有這樣的內容一個鍵 - > value屬性文件(my.prop):Bash - 如何將文件內容讀入變量,該文件是從key-> value屬性文件中讀取的?
ROOT_PATH = /opt/user1/
REL_PATH = data/folder1/
CONF_FILENAME = my.conf
在我的bash腳本,我只是讀取這個文件,像這樣:
#!/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
之後我想,以形成路徑my.conf文件並閱讀其內容,一些變量,像這樣:
CONF_FULL_PATH=$ROOT_PATH$REL_PATH$CONF_FILENAME
CONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}`
如果我打印出CONF_FULL_PATH
變量裏面會有一些垃圾(三個子路徑的一部分)。 並且在該行CONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}`
我都會有這樣的錯誤信息 - :沒有這樣的文件或directoryta /文件夾1/
所以,我的問題是,我怎麼能形成正確的路徑,my.conf文件,並把它的內容給一些特定的變量?我已經試過source
命令作爲while循環的替代品。另外要建立一個合適的路徑字符串,我已經使用了這個語句: $(dirname $ROOT_PATH)/$(dirname REL_PATH)/$(basename $CONF_FILENAME)
但是這對我的觀點來說看起來很奇怪。
任何幫助將是偉大的!
'而讀-r鍵EQ值;做聲明「$ key = $ value」;完成<$ PROP_FILE'簡化了你的循環。 – chepner