shell 用于从 属性 文件的数组中读取 属性 的脚本
shell script to read property in an array from property file
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 读取到数组中。
你可以把它们分别读入两个变量中。
逐行读取文件,继续在 srcVal 中附加 src 内容,由 space.
分隔
set -A srcArrVar -- $srcVal
set -A destArrVar -- $destVal
或者你可以像下面这样使用 associate arry
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....
从 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
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 读取到数组中。
你可以把它们分别读入两个变量中。 逐行读取文件,继续在 srcVal 中附加 src 内容,由 space.
分隔set -A srcArrVar -- $srcVal
set -A destArrVar -- $destVal
或者你可以像下面这样使用 associate arry
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....
从 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