我正在尝试读取配置文件并使用以下代码获取参数的值。
#!/bin/bash
app=ag
echo $app
#works if actual value of $app is used in quotes
processes=$(awk -F ' *= *' '$1=="ag"{print $2}' conf.cfg)
#doesn't work if trying to derive from variable
processes=$(awk -F ' *= *' '$1=="$(echo $app)"{print $2}' conf.cfg)
processes=$(awk -F ' *= *' '$1==\""$app"\"{print $2}' conf.cfg)
在上述处理中如何使用变量值awk
?
答案1
如果我正确理解了所需的结果,你应该使用这样的结构:
processes=$(awk -v APP="${app}" -F ' *= *' '$1 ~ APP {print $2}' conf.cfg)
-v - argument assignment
我不太确定,但我在知识库中没有找到使用全局变量的 awk 示例。可能还有其他更优雅的样品。