我计划从我的脚本中准备一个主参数文件,如下图所示。
>cat ReferenceFile.cfg
ENV_VARIABLE:
{
aaa='asdfa'
Temp_Dir='/asdf/casdf/asd/'
Script_Dir='/asdf/asd/adsf/'
}
ArchiveDetails:
{
FOLDERS PATERN DAYS_TO_RETAIN MINIMUM_SIZE_THESHOLD(MB)
/aaa/bbb/ * 3 300
/ddd/eee/ *.txt 4
/aaa/ccc/ ABC* 4 2000
}
Exceptions:
{
EXTENSIONS
.sh
.ksh
.cfg
}
...
...
...
为了阅读ENV_VARIABLE:下的内容,我需要到达那里并执行以下操作。
cat /param/paramter.cfg | while read line
do
<Reach the line under EVN_VARIABLE>
eval $line
done
为了阅读ArchiveDetails:下的内容,我需要到达那里并执行以下操作。
cat /param/paramter.cfg <Reach the line under ArchiveDetails>
| while read FOLDERS PATERN DAYS MINIMUM_SIZE
do
...
...
done
同样聪明,我会为例外而做。 我的问题是,我如何直接到达指定的部分。与ArchiveDetails或Exceptions等下的段一样 我一看到&#39;}&#39;}就匆匆退出阅读。并使用&#39; break&#39;命令。还有其他更好的方法吗?
建议我。提前谢谢。
答案 0 :(得分:0)
最简单的方法就是使用sed
删除您要查找的起始行的所有内容:
sed -e 1,/^ENV_VARIABLE:/d < ReferenceFile.cfg | while read line; do
...
done
将sed命令扩展为仅返回您正在寻找的“部分”并不困难:
SECTION=ENV_VARIABLE
CFG=ReferenceFile.cfg
CFGSECT=$(sed -n -e 1,/^$SECTION:/d -e /^{/d -e /^}/q -ep < $CFG)
eval "$CFGSECT"