簡體   English   中英

Bash-如何將文件的內容讀入變量,該文件是從key-> value屬性文件中讀取的?

[英]Bash - How to read content of file into variable, the file was read from key->value property file?

我有一個具有這樣內容的key-> value屬性文件(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}`我將CONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}`此錯誤消息- :沒有這樣的文件或目錄 CONF_FILE_CONTENT=`cat ${CONF_FULL_PATH}` / folder1 /

因此,我的問題是,如何正確形成my.conf文件的路徑並將其內容放入某個特定變量? 我已經嘗試使用source命令代替while循環。 同樣,為了構建正確的路徑字符串,我使用了以下語句: $(dirname $ROOT_PATH)/$(dirname REL_PATH)/$(basename $CONF_FILENAME)但是從我的角度來看這很奇怪。

任何幫助將是巨大的!

如果從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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM