我有一个key->值属性文件(my.prop),其中包含以下内容:
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}`
我将收到此错误消息 - :没有这样的文件或目录/ folder1 /
所以,我的问题是,我怎样才能正确地形成 my.conf 文件的路径并将其内容放到某个特定的变量中?我已经尝试source
命令作为while循环的替代。另外,为了构建一个正确的路径字符串,我使用了以下语句:
$(dirname $ROOT_PATH)/$(dirname REL_PATH)/$(basename $CONF_FILENAME)
但这看起来很奇怪。
任何帮助都会很棒!
答案 0 :(得分:1)
如果从my.prop
文件中删除空格,则可以使用source
(或.
)来读取其中的变量。这将使它更容易。
my.prop:
ROOT_PATH=/opt/user1/
REL_PATH=data/folder1/
CONF_FILENAME=my.conf
然后您可以直接在脚本中使用这些:
#!/bin/bash
. my.prop
CONF_FULL_PATH="${ROOT_PATH}${REL_PATH}${CONF_FILENAME}"
CONF_FILE_CONTENT=$(cat "$CONF_FULL_PATH")