我有一个包含DNS记录名称的变量名称。我想检查某些条件,例如,如果它以.com
或.es
结尾。
现在我正在使用
name="test.com"
namecheck=`echo $name | grep -w "^[A-Za-z]*..com"`
但它只检查com
并忽略.
也可以根据存储在数组中的一系列值进行检查,如
domain=[ ".es" ".com" ".de"]
答案 0 :(得分:6)
纯bash
实施:
name=test.com
domains=(es com de)
for dom in ${domains[@]}; do
[[ $name == *.$dom ]] && echo $name && break
done
答案 1 :(得分:3)
您可以使用此egrep
:
egrep -q "\.(com|es|de)$"
如果给定的输入以.com
OR .es
或.de
编辑:将其与一系列允许的域一起使用:
domain=( "es" "com" "de" )
str=$(printf "|%s" ${domain[@]})
str="${str:1}"
echo "abc.test.com"|egrep "\.(${str})$"
abc.test.com
echo "abc.test.org"|egrep "\.(${str})$"
答案 2 :(得分:2)
POSIX shell兼容且超快:
case "$name" in *.de|*.com|*.es) echo "$name" or whatever ;; esac