shell script 在if 的判断条件正则表达式=~中引号问题

今天在脚本里运行if判断的时候,总是进不了对应的分支,检查正则表达式也没有错误。单独拿到shell里面执行还是显示没有匹配。比较奇怪,就搜了下,才发现是在=~ 后面的正则表达式上不能加上引号,而且以点代表任意字符,最后面是不能加上(.)*来匹配接完的。

下面是搜到的部分信息:

一个匹配ip地址的测试,结果匹配不了:

newip=‘192.168.1.1‘
if [[ "$newip" =~ ‘^([0-9]{1,3}\.){3}[0-9]{1,3}$‘ ]];then
    echo ‘找到了ip地址‘
fi

翻遍了google中的中文资料,都没发现问题。最后终于用英文搜到《Advanced Bash-Scripting Guide》中的一篇介绍Bash版本的文章,其中写道:

The =~ Regular Expression match operator no longer requires quoting
of the pattern within [[ … ]].

把测试条件换成下面这样就成功了。

if [[ "$newip" =~ ^([0-9]{1,3}.){3}[0-9]{1,3}$ ]];then
    ....
fi

使用变量的时候,是可以使用引号的:

newip=‘192.168.1.100‘
reg=‘^([0-9]{1,3}.){3}[0-9]{1,3}$‘
if [[ "$newip" =~ $reg ]];then
    echo ‘找到了ip地址‘
fi

但是,对于 $reg 这个变量,在 [[]] 操作符中,就不能加上双引号,否则也会不匹配。

时间: 2024-10-16 15:24:32

shell script 在if 的判断条件正则表达式=~中引号问题的相关文章

shell中if判断条件中使用[],[[]],(())还是test,let的比较

学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我悟性差或是看书太少),今天总结一下,基础的东西如它们 的使用方法不再赘述,重点说说它们的区别的使用时应该注意的地方. 先说[]和test,两者是一样的,在命令行里test expr和[ expr ]的效果相同.test的三个基本作用是判断文件.判断字符串.判断整数.支持使用与或非将表达式连接起来.要注意的有: 1.test中可用的

[Shell]if 常用判断条件

IF 判断 之前也写过简单的shell脚本,也不是转职运维,和系统相关的工作比较少,所以不怎么熟练. 最近由于系统总是出现各种乱七八糟的问题,也没有人来协助,只好自己写shell脚本了,都是些基础的脚本,但由于shell的语法和通常的高级语言有些不一样,所以还是要系统的看下常用的部分. if语句就是很重要的一个. 这种文章很多,只是拿来主义,如果有心得体会也会加上,小计下以后备查. 基本结构:  if语句块需要使用if结束 if condition then statements elif co

Shell中条件判断语法与判断条件

一,简介 Shell各种判断结构和运算符的用法是shell编程的基础,了解shell的判断.运算符和一些退出状态 对后面的学习有很重要的影响.shell有一个内部命令test经常用于对判断语句 进行测试一种或几种状态的条件是否成立 二. 判断条件 (1)Linux的shell中的测试命令,用于测试某种条件或某几种条件是否真实存在 测试命令是判断语句和循环语句中条件测试的工具,对判断和运算符的比较测试有很大的帮助. (2)测试条件为真,返回一个0值:      为假,返回一个非0整数值 测试命令有

Shell脚本IF条件判断和判断条件总结

转自:http://m.jb51.net/article/56553.htm 这篇文章主要介绍了Shell脚本IF条件判断和判断条件总结,本文先是给出了IF条件判断的语法,然后给出了常用的判断条件总结,需要的朋友可以参考下 前言:      无论什么编程语言都离不开条件判断.SHELL也不例外. if list then           do something here       elif list then           do another thing here       e

SHELL学习笔记----IF条件判断,判断条件

SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here       elif list then           do another thing here       else          do something else here fi  EX1: #!/bin/bash if [ `uname -m` == "x86_64" ]

shell script详解

shell script详解 定义 利用shell的功能写的一个"程序"(program),这个程序是纯文本文件,可以将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式.管道命令与数据流重定向. 用途 自动化管理.管理系统.入侵检测.连续命令单一化.简单的数据处理.跨平台使用等 规范 #!/bin/bash 声明这个文件内的语法是bash的语法,则系统会加载bash的相关配置文件来执行下面的命令 # Program: #       This program shows

学习shell script

如果你的想要管理好你的主机,那么就要好好学习自动管理系统的有效工具--hell script!基本上,shell script有点像早期的批处理文件,即将很多命令整合起来一次执行,但是shell script拥有更强大的功能,它可以进行类似程序的编写,并且不需要经过编译就能够执行,非常方便我们对系统进行管理. 今天我们主要通过对一些shell script的习题来加深对脚本知识的学习. 习题1:对成绩进行判断,要求输入一个正整数,以60分,85分为界输出不同的评语. #!/bin/bash #

跟鸟哥学Linux之——shell script

从程序员的角度来看,Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在系统管理等领域,Shell编程起着不可忽视的作用.前期我对shell编程做了一个初步的认识,现总结如下: 思维导图: 知识分为了两部分: 基本知识: 在基本知识中我将其分为了:执行方法.运算式.变量和判断式四部分.1.执行方法就是在Linux中shell文件执行的命令,用的多了自然会没有问题.2

Shell编程之三 —— shell script 脚本(未完待续)

1.脚本的语法构成: shell script 是利用 shell 的功能所写的一个『程序(program)』,这个程序是使用纯文本文件(文件后缀名最好为sh文件,方便我们管理),将一些 shell 的语法与指令(含外部指令)写在里面, 搭通配符.配正规表示法.管线命令与数据流重定向.条件判断.循环逻辑等功能,以达到我们所想要的处理目的. 构成(常见):shell语法和外部指令   通配符     [a-z]  [A-Z]     ?    *          正规表达式      管线命令