我有下一个命令来获取我当前的 ip 地址:
ip=$(ifconfig | awk '/inet addr/{print substr($2,6)}' | grep -v "127")
我想用 if 语句检查 ip 是以 19 还是以 10 开头
if [[ $ip =~ "^19*" ]]; then some instructions; fi
但是还是不行,希望大家帮帮忙
最佳答案
首先,您的正则表达式会检查 1
、19
、199
、1999
等,而不是“19 或 10”。 “以 19 或 10 开头”的正则表达式为 ^1[90]
。
其次,如果您引用正则表达式,它会作为字符串匹配,即字面意思。你可以使用
if [[ $ip =~ ^1[90] ]]; then
最好将正则表达式存储在一个单独的变量中,然后使用该变量,不加引号,以避免所有引用问题:
re='^1[90]'
if [[ $ip =~ $re ]]; then
引用资料:
- Bash manual about conditional constructs
- BashGuide page about patterns (见正则表达式部分)
- Chet's FAQ在 E14
关于linux - 如何比较bash中的IP值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834887/