如何在bash中比较IP值?

时间:2016-01-17 03:46:38

标签: linux bash ubuntu command-line

我有下一个命令以获取我当前的IP地址:

ip=$(ifconfig | awk '/inet addr/{print substr($2,6)}' | grep -v "127")

我想检查ip是以19开头还是以10开头,if语句

if [[ $ip =~ "^19*" ]]; then some instructions; fi

但它不起作用,我希望你能帮到这个

2 个答案:

答案 0 :(得分:3)

首先,您的正则表达式会检查191991999^1[90]等,而不是" 19或10"。 "的正则表达式以19或10"开头。将是if [[ $ip =~ ^1[90] ]]; then

其次,如果引用正则表达式,则将其匹配为字符串,即字面意思。你可以用

re='^1[90]'
if [[ $ip =~ $re ]]; then

优良作法是将正则表达式存储在单独的变量中,然后使用该变量(不带引号)来避免所有引用问题:

{{1}}

参考文献:

答案 1 :(得分:0)

删除" ^ 19 *"周围的双引号

并循环遍历$ ip,因为它可能包含ips列表