正在读取shell脚本中包含“的属性文件”=&引用;性格
我有两个文件param.properties和readParam.sh,它们从param.properties文件中读取参数值 param.properties:正在读取shell脚本中包含“的属性文件”=&引用;性格,shell,properties-file,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'=' -f
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:a
val2:b
式中,val2只给出一半的值(它只给出“b”而不是“b=c;c=d”)
请帮我处理相同的只需扩展您现有的代码: 改变
cut -d'=' -f2
进入:
但是,我会将您的cat | grep | cut
链条更改为一个awk单衬套:
function getProperty {
awk -F'=' -v k="$1" '$1==k&&sub(/^[^=]*=/,"")' $PROPERTY_FILE
}
只需扩展现有代码: 改变
cut -d'=' -f2
进入:
但是,我会将您的cat | grep | cut
链条更改为一个awk单衬套:
function getProperty {
awk -F'=' -v k="$1" '$1==k&&sub(/^[^=]*=/,"")' $PROPERTY_FILE
}
-f2将仅给出根据分隔符剪切的字符串中的第二个参数
PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2-`
因为“=”出现在同一行的多个地方,所以它会将字符串分成多个部分,当您尝试使用f2检索输出时,它只会得到第二部分
因此,用于获取其余值的是第一次出现分隔符后的字符串
PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2-`
-f2将仅给出根据分隔符剪切的字符串中的第二个参数
PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2-`
因为“=”出现在同一行的多个地方,所以它会将字符串分成多个部分,当您尝试使用f2检索输出时,它只会得到第二部分
因此,用于获取其余值的是第一次出现分隔符后的字符串
PROP_VALUE=`cat $PROPERTY_FILE | grep "$PROP_KEY" | cut -d'=' -f2-`