我有一个源文件,例如 config.properties,其中包含如下字符串
ExchgRate_prop="EDB_NAME=share_exchange SRC_WDS=wds PN=ExchgRate"
Compliance_prop="EDB_NAME=share_compliance SRC_WDS=wca PN=com"
Unitcost_prop=="EDB_NAME=share_unitcost SRC_WDS=wda PN=unit"
我有一个将项目名称作为输入的 shell 脚本。如果我将 ExchgRate 传递给脚本,我需要获取值“EDB_NAME=share_exchange SRC_WDS=wds PN=ExchgRate”如果我传递 Unitcost,那么我需要获取值“EDB_NAME=share_unitcost SRC_WDS=wda PN=unit”
任何帮助
答案1
这符合你的标准:
$ cat extract.dat
ExchgRate_prop="EDB_NAME=share_exchange SRC_WDS=wds PN=ExchgRate"
Compliance_prop="EDB_NAME=share_compliance SRC_WDS=wca PN=com"
Unitcost_prop=="EDB_NAME=share_unitcost SRC_WDS=wda PN=unit"
$ grep ExchgRate extract.dat | cut -d'"' -f2
EDB_NAME=share_exchange SRC_WDS=wds PN=ExchgRate
$ grep Unitcost extract.dat | cut -d'"' -f2
EDB_NAME=share_unitcost SRC_WDS=wda PN=unit
为了方便起见,您可以创建一个脚本(请注意,该路径适用于我的系统,而不是您的系统):
#!/bin/bash
# NAME: extract.sh
# PATH: $HOME/askubuntu/
# DESC: Answer for: https://askubuntu.com/questions/1224345/variable-substitution-in-linux-and-dynamically-fetch-property-from-source-file
# PARM: $1 = input file, $2 = field name
# NOTE: Prints result
# DATE: April 5, 2020
grep "$2" "$1" | cut -d'"' -f2
使用 使脚本可执行chmod a+x extract.sh
。
将脚本放在路径中或者在当前目录中使用以下命令调用它:
$ extract.sh extract.dat Unitcost
EDB_NAME=share_unitcost SRC_WDS=wda PN=unit