如何让它发挥作用?
脚本1:(这不起作用)
host=www.example.com
ip=$(getent hosts | grep $host | awk '{ print $1}')
echo $ip
脚本2:(这不起作用)
host=www.example.com
ip=$(getent hosts $host | awk '{ print $1}')
echo $ip
脚本3:(它有效,但我需要使用变量......)
ip=$(getent hosts www.example.com | awk '{ print $1}')
echo $ip
我需要根据变量获取适当的主机文件 IP。
主办方:(等/主机)
127.0.0.1 localhost
1.1.1.1 www.example.com
答案1
你所拥有的应该可以工作,没有理由不可以。它当然可以在我的系统上运行。
你不需要
grep
.以下将起作用:
ip=$(getent hosts "$host" | awk '{ print $1}')
答案2
您混淆了可以使用 获得的两个不同的结果集getent hosts
。
getent hosts
将返回大致相当于的结果cat /etc/hosts
getent hosts TARGET
将使用hosts
中的条目/etc/nsswitch.conf
来查找 的一个或多个主机数据库TARGET
,返回它找到的第一个匹配项
host
脚本 1 将仅从查找/etc/hosts
。也可以稍微缩短:
host=www.example.com
ip=$(getent hosts | awk '/'"$host"'/ {print $1; exit}')
echo $ip
脚本 2 和 3 将搜索/etc/hosts
,也可能搜索 DNS。我不清楚你把它放在哪里'
,或者"
你的第三个脚本无法工作。