在Shell脚本中读取包含“ =”字符

时间:2018-11-21 09:27:41

标签: shell properties-file

我有两个文件param.properties和readParam.sh,它们从param.properties文件中读取参数值

param.properties:

val1=a
val2=b=c;c=d

readParam.sh:

PROPERTY_FILE=p.properties

function getProperty {
   PROP_KEY=$1
   PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2`
   echo $PROP_VALUE
}
val1=$(getProperty "val1")
echo val1 : $val1
val2=$(getProperty "val2")
echo val2 : $val2

当我运行脚本readParam.sh时,输出为:

val1:一个

val2:b

其中val2仅给出一半值(它仅给出“ b”而不是“ b = c; c = d”)

请帮助我

2 个答案:

答案 0 :(得分:1)

只需扩展您现有的代码即可:

更改

 android:launchMode="singleTop"

进入:

cut -d'=' -f2

不过,我会将您的cut -d'=' -f2- 链更改为单个awk单线:

cat|grep|cut

答案 1 :(得分:1)

PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2`

-f2将只给您基于定界符的字符串中的第二个参数。

由于在同一行中的多个位置都存在“ =”,因此它将字符串分成多个部分,当您尝试使用f2检索输出时,只会得到第二部分。

因此用来获取其余值的是第一次出现定界符之后的字符串。

PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2-`
相关问题