Вы путаете два разных набора результатов, которые можно получить с помощью getent hosts
.
getent hosts
вернет результат, в целом эквивалентный cat / etc / hosts
getent hosts TARGET
будет использовать запись hosts
в / etc / nsswitch.conf
для поиска в одной или нескольких базах данных хоста для TARGET
, возвращая первое найденное совпадение Сценарий 1 будет искать хост
только из / etc / hosts
. Его также можно немного сократить:
host=www.example.com
ip=$(getent hosts | awk '/'"$host"'/ {print $1; exit}')
echo $ip
Сценарии 2 и 3 будут искать / etc / hosts
и, возможно, DNS тоже. Мне непонятно, куда вы помещаете '
или "
, чтобы ваш третий сценарий не работал.