#!/bin/bash
for h in "bert" "ernie" "www.google.com"
do
host $h 2>&1 > /dev/null
if [ $? -eq 0 ]
then
echo "$h is a FQDN"
else
echo "$h is not a FQDN"
fi
done
喜欢插入'hostname -f'的输出而不是'bert'或www.google.com 如果主机名是FQDN,则脚本应该继续,否则应该出现错误消息。 PS。如果TLD存在与否则并不重要。例如。 hostname.domain是FQDN或hostname.domain.tld是FQDN。如果TLD在互联网上有效对我来说并不重要。 output of hostname -f
答案 0 :(得分:2)
确保主机名完全合格的常用方法是指定最终.
(通常省略):example.com.
。
但是,从评论到问题,似乎您需要一个简单的字符串比较 - 如果.
出现在任何地方,则假定名称有效,否则出错。最简单的方法是将名称与已移除的第一个.
的副本进行比较 - 如果两者相同,则无法移除.
:
if [ "$h" != "${h/.}" ]
then echo "$h is acceptable" >&2
else echo "$h is not acceptable" >&2
fi
答案 1 :(得分:0)
for h in "bert" "ernie" "www.google.com"
do
if [[ ${h//[^.]} != "" ]]
then
echo "$h contains ."
else
echo "$h doesn't contain ."
fi
done
如果它支持regexp
if [[ $h =~ \. ]]; then