本章内容
- shell函数
- shell正则表达式
1、shell函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.
格式:
funname () {
CMD #函数体
}
例子:
#!/bin/bash
fun () {
echo "hello world"
}
fun
...
╭─root@localhost.localdomain ~
╰─➤ bash test8.sh
hello world
return 函数传参
#!/bin/bash
fun () {
echo "hello world"
return $i
}
for i in {1..4}
do
fun
done
...
╭─root@localhost.localdomain ~
╰─➤ bash test8.sh
hello world
hello world
hello world
hello world
╭─root@localhost.localdomain ~
╰─➤ echo $?
4
return 在函数中定义状态返回值
返回并终止函数
返回的只能是 0-255 的数字,类似于 exit
#!/bin/bash
fun () {
echo "hello world"
return $i
echo "how beautiful!"
}
for i in {1..4}
do
fun return
done
...
╭─root@localhost.localdomain ~
╰─➤ bash test8.sh
hello world
hello world
hello world
hello world
2、正则表达式(基于grep讲解)
- 功能就是用来检索、替换那些符合某个模式(规则)的文本,正则表达式在每种语言中都会有;
- 正则表达式就是为了处理大量的文本或字符串而定义的一套规则和方法
- 通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串
- Linux正则表达式一般以行为单位处理
基础正则表达式
符号 | 描述 |
---|---|
. | 匹配任意单个字符(必须存在) |
^ | 匹配以某个字符开头的行 |
$ | 配以什么字符结尾的行 |
* | 匹配前面的一个字符出现0次或者多次;eg:a*b |
.* | 表示任意长度的任意字符 |
[] | 表示匹配括号内的一个字符 |
[^] | 匹配[^字符]之外的任意一个字符 |
^[^] | 匹配非[^字符]内字符开头的行 |
\< | 锚定 单词首部;eg:\<root |
\> | 锚定 单词尾部:eg:\>root |
\{m,n\} | 表示匹配前面的字符出现至少m次,至多n次 |
\(\) | 表示对某个单词进行分组;\1表示第一个分组进行调用 |
扩展正则
- egrep ...
- grep -E ...
- 扩展正则支持所有基础正则;并有补充
- 扩展正则中{}和[]不用转义可以直接使用;
符号 | 描述 |
---|---|
+ | 表示前面的字符至少出现1次的情况 |
| | 表示“或” |
? | 表示前面的字符至多出现1次的情况 |