可以使用 if
语句和 grep
命令来实现这个判断。
if echo $blackList | grep -w $ip &> /dev/null; then
echo "是黑名单ip"
else
echo "不是黑名单ip"
fi
简单解释一下上面的代码:
echo $blackList
将 blackList 变量的值输出到标准输出。grep -w $ip
在标准输入中搜索 $ip 变量的值。-w
选项表示只搜索完全匹配的单词。&> /dev/null
将标准输出和标准错误输出重定向到 /dev/null,这样在搜索的时候就不会有输出。if
语句判断上一条命令的返回值是否为 0,如果为 0 则表示匹配成功,进入 if 块。
如果是一个大量的ip黑名单,可以使用分隔符来分割变量值。
IFS=',' read -ra arr <<< "$blackList"
for i in "${arr[@]}"; do
if [[ $i == $ip ]]; then
echo "是黑名单ip"
exit 0
fi
done
echo "不是黑名单ip"
需要注意的是,如果黑名单有特殊字符(如空格),可能会影响到结果。建议使用一个文件来存储黑名单IP,然后使用上面的方法在文件中进行查找。