gpt4 book ai didi

linux - bash: awk 打印内部函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:23 24 4
gpt4 key购买 nike

如果我有这样的功能:

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

如何防止“打印 $1”中的 $1 成为传递给函数的参数?

所以基本上我想调用它并得到类似的东西:cat/etc/hosts | awk '/domain/{print $1}'

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

并带有一个传递参数:cat/etc/hosts | awk '/test/{打印测试}'

我试过转义它,但这给了我一个 bash 错误:

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

最佳答案

您可以使用:

getIP() {
awk -v h="${1:-domain}" '$0 ~ h{print $1}' /etc/hosts
}
  • 将变量传递给 awk 使用 -v varname=value
  • 不需要使用无用的猫
  • 如果你只是在做一个echo,就不需要创建局部变量ip

关于linux - bash: awk 打印内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29520083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com