linux - 如何比较bash中的IP值?

标签 linux bash ubuntu command-line

我有下一个命令来获取我当前的 ip 地址:

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

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

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

但是还是不行,希望大家帮帮忙

最佳答案

首先,您的正则表达式会检查 1191991999 等,而不是“19 或 10”。 “以 19 或 10 开头”的正则表达式为 ^1[90]

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

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

最好将正则表达式存储在一个单独的变量中,然后使用该变量,不加引号,以避免所有引用问题:

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

引用资料:

关于linux - 如何比较bash中的IP值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834887/

相关文章:

适用于 Linux 的 Python 可控命令行音频播放器

c - Ater 增加 sleep() fd 无法正常工作

linux - `du -sh` 对于同一文件夹在不同机器上产生不同结果

linux - 如何解决 UNIX 中的 Not a Directory 错误消息

c# - 在 Ubuntu 中没有可用于格式 GIF 的编解码器

linux - 什么是 KVM,为什么有用?

bash - 计算文件中相似行的数量

bash:验证去皮成功

python - 如何在 Azure VM (v1) 上设置全局可见的环境变量

linux - Libcamera 构建的 Meson 安装失败