![从 .properties 文件调用值?](https://linux22.com/image/980969/%E4%BB%8E%20.properties%20%E6%96%87%E4%BB%B6%E8%B0%83%E7%94%A8%E5%80%BC%EF%BC%9F.png)
现在我有一个简单的脚本,我想调用一个 .properties 文件,然后打印该文件的结果,这就是我目前所拥有的
#Specific Set Variables
SpecficStatus="Pass" #SetVariable
timestamp() { date +"%a %d %b %Y %T %Z"; }
SpecficDate=$(timestamp)
echo $SpecficStatus
echo $SpecficDate
#Properties Call
file="savedState.properties"
#Echo out the file
while read LINE; do echo "$LINE"; done < savedState.properties
我的 savedState.properties 文件中有什么
WD_MANAGEGOLD_DATETIMESTAMP=Wed 20 May 2015 13:50:51 UTC
WD_MANAGEGOLD_SUCCESS=false
WD_MANAGERC_DATETIMESTAMP=Wed 20 May 2015 13:50:51 UTC
WD_MANAGERC_SUCCESS=false
正如您从脚本中看到的,我可以调用该文件并打印出结果,但我想要的是能够选择哪些值并将它们存储为变量以供以后在脚本中使用?
任何帮助都很好
答案1
您可以像这样导出它们。
#!/bin/bash
#Specific Set Variables
SpecficStatus="Pass" #SetVariable
timestamp() { date +"%a %d %b %Y %T %Z"; }
SpecficDate=$(timestamp)
echo $SpecficStatus
echo $SpecficDate
#Properties Call
file="savedState.properties"
#Echo out the file
while IFS== read -r VAR1 VAR2
do
#echo "VAR1=$VAR1 : VAR2=$VAR2"
export "$VAR1=$VAR2"
done < savedState.properties
echo "$WD_MANAGEGOLD_DATETIMESTAMP"
echo "$WD_MANAGEGOLD_SUCCESS"
echo "$WD_MANAGERC_DATETIMESTAMP"
echo "$WD_MANAGERC_SUCCESS"
打印出:
Pass
Wed 20 May 2015 12:24:26 EDT
Wed 20 May 2015 13:50:51 UTC
false
Wed 20 May 2015 13:50:51 UTC
false
答案2
使用,将的值grep
存储到变量中,并将的值存储到变量中:WD_MANAGEGOLD_DATETIMESTAMP
wd_managegold_datetimestamp
WD_MANAGEGOLD_SUCCESS
wd_managegold_success
#!/bin/bash
# ...
wd_managegold_datetimestamp=$(< savedState.properties grep -Po '^WD_MANAGEGOLD_DATETIMESTAMP=\K.*')
wd_managegold_success=$(< savedState.properties grep -Po '^WD_MANAGEGOLD_SUCCESS=\K.*')
# ...
但在这种情况下,将相关值存储到数组中可能会很方便,因此将所有WD_MANAGEGOLD
和WD_MANAGERC
值存储到两个wd_managegold
和wd_managerc
数组中:
#!/bin/bash
# ...
IFS=$'\n\r' GLOBIGNORE='*' wd_managegold=($(< savedState.properties grep -Po '^WD_MANAGEGOLD_.*=\K.*'))
IFS=$'\n\r' GLOBIGNORE='*' wd_managerc=($(< savedState.properties grep -Po '^WD_MANAGERC_.*=\K.*'))
# ...
IFS=$'\n\r'
:bash
将 的内部字段分隔符设置为换行符和回车符,以便每个换行符/回车符分隔的值都存储到单个数组的字段中;GLOBIGNORE='*'
:将bash
内置GLOBIGNORE
变量设置为*
,这样匹配特殊文件名的值就不会被特殊处理