变量值替换

变量值替换

我正在尝试读取配置文件并使用以下代码获取参数的值。

#!/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 示例。可能还有其他更优雅的样品。

相关内容