conf.properties文件包含以下内容:
src1=abc
dest1=xyz
src2=123
dest2=456
...
以下shell脚本正在访问conf.properties文件中的src和dest属性。
. /tmp/conf.properties
echo "$src1"
echo "$dest1"
echo "$src2"
echo "$dest2"
现在,文件中可能有任意数量的src和dest属性。
如何编写代码以将属性文件中的所有src和dest读入数组。
答案 0 :(得分:0)
您可以将它们分别读取并放在两个变量中。 逐行读取文件继续在srcVal中附加src的东西,用空格分隔。
set -A srcArrVar -- $srcVal
set -A destArrVar -- $destVal
或者您可以使用下面的关联
typeset -A srcArray
srcArray[src1]="abc"
srcArray[dest1]="xyz"
是的,你需要解析它..我可以立即想到一种方法,如下所示
grep "src" filename > srcFile
grep "dest" filename > destFile
sort srcFile > sortedSrcFile
sort destFile > sorteddestFile
srcVal=`cut -d"=" -f2 sortedSrcFile`
destVal=`cut -d"=" -f2 sorteddestFile`
set -A srcArrVar -- $srcVal
set -A destArrVar -- $destVal
通过使用sed / awk可以有更优雅的方式做上面的事情...我假设你没有缺失值,系列是连续的src1,src2 ......类似于dest1,dest2,dest3 ......
答案 1 :(得分:0)
从Ajay的答案中得到线索后创建了自己的逻辑:
filename=/tmp/conf.properties
srcArr=($(grep "src" $filename))
destArr=($(grep "dest" $filename))
len=${#srcArr[@]}
for (( i=0; i<${len}; i++ ))
do
srcVal=$(cut -d"=" -f2 <<< ${srcArr[i]})
destVal=$(cut -d"=" -f2 <<< ${destArr[i]})
...
done