流程控制语句的正则比较

[root@shell ~]# [[ "$USER" =~ ^r ]] && echo 为真 || echo 为假

为真

[root@shell ~]# [[ "$USER" =~ ^o ]]  && echo 为真  || echo 为假

为假

正则比较必须要使用双中括号

比较的时候使用=~这个符号

正则比较的时候的后面的匹配正则不能使用引号括起来

[root@shell ~]# num=123

[root@shell ~]# [[ $num =~ ^[0-9] ]] && echo 为真  || echo  为假

为真

[root@shell ~]# num=12a

[root@shell ~]# [[ $num =~ ^[0-9] ]] && echo 为真  || echo  为假

为真

[root@shell ~]# num=a123

[root@shell ~]# [[ $num =~ ^[0-9] ]] && echo 为真  || echo  为假

为假

[root@shell ~]# num=1a2

[root@shell ~]# [[ $num =~ ^[0-9] ]] && echo 为真  || echo  为假

为真

[root@shell ~]# [[ $num =~ ^[0-9]$ ]] && echo 为真  || echo  为假

为假

[root@shell ~]# num=3

[root@shell ~]# [[ $num =~ ^[0-9]$ ]] && echo 为真  || echo  为假

为真

[root@shell ~]# num=33

[root@shell ~]# [[ $num =~ ^[0-9]$ ]] && echo 为真  || echo  为假

为假

[root@shell ~]# [[ $num =~ ^[0-9]*$ ]] && echo 为真  || echo  为假

为真

[root@shell ~]# num=3a3

[root@shell ~]# [[ $num =~ ^[0-9]*$ ]] && echo 为真  || echo  为假

为假

[root@shell ~]# num=''

[root@shell ~]# [[ $num =~ ^[0-9]*$ ]] && echo 为真  || echo  为假

为真

[root@shell ~]# # * 表示匹配前面的字符出现0次或者0次以上

[root@shell ~]# # + 表示匹配前面的字符出现1次或者1次以上

[root@shell ~]# [[ $num =~ ^[0-9]+$ ]] && echo 为真  || echo  为假

为假

[root@shell ~]# num=134253475839465834

[root@shell ~]# [[ $num =~ ^[0-9]+$ ]] && echo 为真  || echo  为假

为真

[root@shell ~]# num=8957265g89470257489

[root@shell ~]# [[ $num =~ ^[0-9]+$ ]] && echo 为真  || echo  为假

为假

[root@shell ~]# num=qrrwe

[root@shell ~]# [[ $num =~ ^[a-z]+$ ]] && echo 为真  || echo  为假

为真

[root@shell ~]# num=iugheiruA

[root@shell ~]# [[ $num =~ ^[a-z]+$ ]] && echo 为真  || echo  为假

为假

[root@shell ~]# [[ $num =~ ^[a-Z]+$ ]] && echo 为真  || echo  为假

为真

#正则比较示例

判断用户输入的值是否为整数,数字

[root@shell /scripts]# cat if-7.sh

#!/bin/bash

read -p "请输入一个整数:" num

if [[ $num =~ ^[0-9]+$ ]];then

    echo "你输入的是一个整数"

else

    echo "输入的不是一个整数"

    exit

fi

[root@shell /scripts]# sh if-7.sh

请输入一个整数:123

你输入的是一个整数

[root@shell /scripts]# sh if-7.sh

请输入一个整数:12a

输入的不是一个整数

[root@shell /scripts]# sh if-7.sh

请输入一个整数:rgtrh

输入的不是一个整数

[root@shell /scripts]# sh if-7.sh

请输入一个整数:12.5

输入的不是一个整数

[root@shell /scripts]# cat if-8.sh

#!/bin/bash

read -p "请输入一个由字母组成的字符串:" num

if [[ $num =~ ^[a-Z]+$ ]];then

    echo "你输入的是一个由字母组成的字符串!"

else

    echo "输入的不是一个由字母组成的字符串!"

    exit

fi

[root@shell /scripts]# sh if-8.sh

请输入一个由字母组成的字符串:123

输入的不是一个由字母组成的字符串!

[root@shell /scripts]# sh if-8.sh

请输入一个由字母组成的字符串:12as

输入的不是一个由字母组成的字符串!

[root@shell /scripts]# sh if-8.sh

请输入一个由字母组成的字符串:af3

输入的不是一个由字母组成的字符串!

[root@shell /scripts]# sh if-8.sh

请输入一个由字母组成的字符串:ewregrtjyt

你输入的是一个由字母组成的字符串!

[root@shell /scripts]# sh if-8.sh

请输入一个由字母组成的字符串:rgtsrAaAF

你输入的是一个由字母组成的字符串!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。