1、函数
1、函数概述
shell 中允许将一组命令集合成语句形成一段可用代码,这些代码块称为 shell 函数,给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能
2、定义函数
函数名()
{
函数体(一堆命令的集合,来实现某个功能)
}
或
function 函数名()
{
函数体(一堆命令的集合,来实现某个功能)
}
函数中 return 说明:
1、return 可以结束一个函数
2、return 默认返回函数中最后一个命令状态值,也可以给定参数值,范围在0~256之间
3、如果没有 return 命令,函数将返回最后一个指令的退出状态
3、调用函数
1、当前命令行调用
[root@yhm ~]# cat 1.sh
#!/bin/bash
hello()
{
echo "hello"
}
[root@yhm ~]# source 1.sh
[root@yhm ~]# . 1.sh
[root@yhm ~]# hello
hello
[root@yhm ~]# hello 888
hello
2、定义到用户的环境变量中
[root@yhm ~]# vim ~/.bashrc
hello(){
echo "hello"
}
注:当用户打开 bash 的时候会读取该文件
3、脚本中调用
[root@yhm ~]# vim 2.sh
#!/bin/bash
source ~/.bashrc
func(){
echo "hello shell"
}
func
[root@yhm ~]# source 2.sh
hello shell
[root@yhm ~]# hello
hello
2、正则表达式
1、正则表达式概述
正则表达式(Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常贵表示法,是一种字符模式,用于在查找过程中匹配指定的字符。许多程序设计语言都支持利用正则表达式进行字符串的操作。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。支持正则表达式的程序如:locate |find| vi| grep| sed |awk
正则表达式的作用:匹配某些特定字符串,做特定处理等等
元字符:指那些在正则表达式中具有特殊意义的专用字符,如:点(.)、星(*)、问号(?)等
前导字符:位于元字符前面的字符:abc*、abbo.
2、正则表达式中常用的元字符
元字符 | 功能 |
---|---|
. | 匹配除了换行符以外的任意单个字符的字符串 |
* | 前导字符出现0次或连续多次的字符串 |
.* | 任意长度字符的字符串 |
^ | 行首(以…开头)的字符串 |
$ | 行尾(以…结尾)的字符串 |
^$ | 空行 |
[] | 匹配括号里任一单个字符或一组单个字符的字符串 |
[^] | 匹配不包含括号里任一单个字符或一组单个字符的字符串 |
^ [] | 匹配以括号里任一单个字符或一组单个字符开头的字符串 |
^ [^] | 匹配不以括号里任一单个字符或一组单个字符开头的字符串 |
[root@yhm ~]# vim 1.txt
ggle
gogle
google
gooogle
goooooogle
gooooooogle
taobao.com
taotaobaobao.com
jingdong.com
dingdingdongdong.com
10.1.1.1
Adfjd8789JHfdsdf/
a87fdjfkdLKJK
7kdjfd989KJK;
bSKJjkksdjf878.
cidufKJHJ6576,
hello world
helloworld yourself
3、正则表达式中其他常用元字符
元字符 | 功能 |
---|---|
\ < | 取单词的头 |
\ > | 取单词的尾 |
\ < \ > | 精确匹配 |
\ {n\ } | 匹配前导字符连续出现n次 |
\ {n,\ } | 匹配前导字符至少出现n次 |
\ {n,m\ } | 匹配前导字符出现n次与m次之间 |
\ ( \ ) | 保存被匹配的字符 |
\ d | 匹配数字(grep -p) |
\ w | 匹配字母数字下划线(grep -p) |
\ s | (匹配空格、制表符、换页符(grep -p)) |
4、扩展类正则常用元字符
grep 需要叫 -E 或者使用 egrep
sed 必须加 -r
扩展元字符 | 功能 |
---|---|
+ | 匹配一个或多个前导字符 |
? | 匹配零个或一个前导字符 |
| | 或 |
() | 组符号(看成整体) |
{n} | 前导字符重复 n 次 |
{n,} | 前导字符重复至少 n 次 |
{n,m} | 前导字符重复 n 到 m 次 |
注:
表达式 | 功能 |
---|---|
[:alnum;] | 字母与数字字符 |
[:alpha:] | 字母字符(包括大小写字母) |
[:blank:] | 空格与制表符 |
[:digit:] | 数字 |
[:lower:] | 小写字母 |
[:upper:] | 大写字母 |
[:punct:] | 标点符号 |
[:space:] | 包括换行符、回车等在内的所有空白 |