bash:awk打印内部功能

时间:2015-04-08 16:19:33

标签: linux bash shell awk

如果我有以下功能:

function getIP() {
    local ip=$(cat /etc/hosts | awk '/${1:-domain}/{print $1}')
    echo "$ip"
}

如何防止'print $ 1'中的$ 1成为传递给函数的参数?

所以基本上我想打电话给它,得到类似的东西:cat /etc/hosts | awk '/domain/{print $1}'

但我现在使用默认参数获取:cat /etc/hosts | awk '/domain/{print }'

并使用传递的参数:cat /etc/hosts | awk '/test/{print test}'

我试图逃避它,但这给了我一个bash错误:

awk: /${1:-domain}/{print \$1}
awk:                      ^ backslash not last character on line

1 个答案:

答案 0 :(得分:1)

您可以使用:

getIP() {
    awk -v h="${1:-domain}" '$0 ~ h{print $1}' /etc/hosts
}
  • 将变量传递给awk使用-v varname=value
  • 无需使用无用的猫
  • 如果您正在执行ip
  • ,则无需创建本地变量echo