ShellScript脚本编程(函数与正则表达式)
函数的本质就是一段可以反复调用的代码块
在Shell中,函数细分为系统函数和自定义函数
系统函数
我们可以测试一些系统命令,例如使用率非常高的 date
,我们还可以获取时间戳 date +%s
当我们需要打印写一些系统日志信息文件的时候,文件的命名规则通常在最后会添加上时间戳
#!/bin/bash
filename="$1_log_$(date +%s)"
echo $filename
正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在 Linux 中,grep,sed,awk 等文本处理工具都支持通过正则表达式进行模式匹配
常规匹配
一串不包含特殊字符的正则表达式匹配它自己
常用特殊字符
1. 字符区间(中括号):[]
[] 表示匹配某个范围内的一个字符
[6,8]
------匹配6或者8[0-9]
------匹配一个0-9 的数字[0-9]*
------匹配任意长度的数字字符串[a-z]
------匹配一个 a-z 之间的字符[a-z]*
-----匹配任意长度的字母字符串[a-c,e-f]
---匹配 a-c 或者 e-f之间的任意字符cat /etc/passwd | grep r[a,b]t echo "23fsdfrat23f5y2t23sdf" | grep r[a,b]t echo "23fsdfrat23f5y2t23sdf" | grep r[ab]t echo "23fsdfraabat23f5y2t23sdf" | grep r[ab]*t cat /etc/passwd | grep r[a-z]t cat /etc/passwd | grep r[a-z]*t cat /etc/passwd | grep r[a,b]t echo "23fsdfrat23f5y2t23sdf" | grep r[a,b]t echo "23fsdfrat23f5y2t23sdf" | grep r[ab]t echo "23fsdfraabat23f5y2t23sdf" | grep r[ab]*t cat /etc/passwd | grep r[a-z]t cat /etc/passwd | grep r[a-z]*t