Linux学习之shell4

特殊流程控制语句

exit语句
语法
exit [返回值]

如果exit命令之后定义了返回值,那么这个脚本执行之后的返回值就是我们自己定义的返回值。
可以通过查询$?这个变量,来查看返回值。

如果exit之后没有定义返回值,脚本执行之后的返回值是执行exit语句之前,最后执行的一条命令的返回值。

示例:

read -p "number: " -t 30 num

#如果变量num是数字,则把num的值替换为空
#把替换之后的值赋予变量m
m=$(echo $num | sed 's/[0-9]//g')

#判断变量m的值是否为空,不为空输出报错信息,退出脚本,退出返回值为99
[ -n $m ] && echo "err" && exit 99

#如果没有退出,则打印变量num中的数字
echo "$num"

[root@VM-12-14-centos ~]# ./test12.sh
number: 5
5
[root@VM-12-14-centos ~]# echo $?
0
[root@VM-12-14-centos ~]# ./test12.sh
number: a
err
[root@VM-12-14-centos ~]# echo $?
99
break语句

当程序执行到break语句时,会结束整个当前循环。而continue 语句也是结束循环的语句,不过continue 语句单次当前循环,而下次循环会继续。

示例:

#循环五次
for (( i=1;i<=5; i=i+1 ))
	do
		#如果变量i的值等于3
		if [ $i -eq 3 ]
			then
			#退出整个循环
			break
		fi
	#输出变量i的值
	echo $i
	done 

[root@VM-12-14-centos ~]# ./test13.sh
1
2
continue语句

continue也是结束流程控制的语句。如果在循环中,continue语句只会结束单次当前循环。

#循环五次
for (( i=1;i<=5; i=i+1 ))
	do
		#如果变量i的值等于3
		if [ $i -eq 3 ]
			then
			#退出本次循环
			continue
		fi
	#输出变量i的值
	echo $i
    done 

[root@VM-12-14-centos ~]# ./test14.sh
1
2
4
5

三的那次循环跳出了,没有打印

正则表达式

.            匹配任意单个字符,可以是一个汉字

[root@VM-12-14-centos ~]# echo abc |grep a.c
abc
[root@VM-12-14-centos ~]# echo $?
0
[root@VM-12-14-centos ~]# echo dbc |grep a.c
[root@VM-12-14-centos ~]# echo $?
1

*            对前一项进行0次或多次重复匹配

[]          匹配指定范围内的任意单个字符

[root@VM-12-14-centos ~]# echo a |grep [a~d]
a
[root@VM-12-14-centos ~]# echo $?
0
[root@VM-12-14-centos ~]# echo a |grep [c~d]
[root@VM-12-14-centos ~]# echo $?
1

^           在每行的开始进行匹配

[root@VM-12-14-centos ~]# echo "123 456 789" | grep ^123
123 456 789
[root@VM-12-14-centos ~]#  echo $?
0
[root@VM-12-14-centos ~]# echo "123 456 789" | grep ^456
[root@VM-12-14-centos ~]#  echo $?
1

$           在每行的末尾进行匹配

[root@VM-12-14-centos ~]# echo "123 456 789" | grep 789$
123 456 789
[root@VM-12-14-centos ~]#  echo $?
0
[root@VM-12-14-centos ~]# echo "123 456 789" | grep 123$
[root@VM-12-14-centos ~]#  echo $?
1

[^str]      对任何不在str中的单个字符进行匹配

[root@VM-12-14-centos ~]# echo "a" | grep [^abc]
[root@VM-12-14-centos ~]# echo $?
1
[root@VM-12-14-centos ~]# echo "m" | grep [^abc]
m
[root@VM-12-14-centos ~]# echo $?
0

\          忽略后面一个字符的特殊含义

[root@VM-12-14-centos ~]# echo "asdf" | grep "^a.df"
asdf
[root@VM-12-14-centos ~]# echo $?
0
[root@VM-12-14-centos ~]# echo "asdf" | grep "^a\.df"
[root@VM-12-14-centos ~]# echo $?
1

a{n}    a重复指定的次数

[root@VM-12-14-centos ~]# echo "aaaaaaaa" | grep '^a\{5\}'
aaaaaaaa
[root@VM-12-14-centos ~]# echo $?
0
[root@VM-12-14-centos ~]# echo "aaaddddd" | grep '^a\{5\}'
[root@VM-12-14-centos ~]# echo $?
1

贪婪:尽可能多的去匹配(大前提:匹配成功)

a*: 0-任意多

a?:0-?

a+:1-任意

a{n,m}: n-m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值