我有一个属性文件test.properties
,其内容如下:
x.T1 = 125
y.T2 = 256
z.T3 = 351
我想读取整个文件,每当它找到y.T2
时,它应该将值赋给shell脚本中的某个变量并回显该值。
我是shell脚本的新手。帮帮我,提前谢谢
答案 0 :(得分:2)
您希望在脚本的循环中使用read
。虽然您可以source
一个文件,但如果=
符号周围有空格,它就不起作用。这是一种处理文件的方法:
#!/bin/sh
# test for required input filename
if [ ! -r "$1" ]; then
printf "error: insufficient input or file not readable. Usage: %s property_file\n" "$0"
exit 1
fi
# read each line into 3 variables 'name, es, value`
# (the es is just a junk variable to read the equal sign)
# test if '$name=y.T2' if so use '$value'
while read -r name es value; do
if [ "$name" == "y.T2" ]; then
myvalue="$value"
fi
done < "$1"
printf "\n myvalue = %s\n\n" "$myvalue"
<强>输出强>
$ sh read_prop.sh test.properties
myvalue = 256
答案 1 :(得分:2)
选中此项,将完全有帮助:
expVal=`cat test.properties | grep "y.T2" | cut -d'=' -f2`
答案 2 :(得分:0)
我知道这是一个老问题,但我刚刚遇到过这个问题,如果我理解正确,那么问题就是从属性文件中获取特定键的值。 为什么不使用grep找到密钥和awk来获取值呢?
使用grep和awk从test.properties中提取值
Telecallerfirststep::whereDate('created_at','=',date('Y-m-d'))->groupBy('leadsid')->count();
如果&#39; =&#39;之后有一个空格,则该值将包含空格。修剪前导空格
export yT2=$(grep -iR "^y.T2" test.properties | awk -F "=" '{print $2}')
echo y.T2=$yT2
修剪参考: How to trim whitespace from a Bash variable?。 参考链接提供的解释。