正则表达式
基础正则表达式
元字符 | 作用 |
---|---|
* | 前一个字符匹配 0 次或任意多次。 |
. | 匹配除了换行符外任意一个字符。 |
^ | 匹配行首。例如:^hello 会匹配以 hello 开头的行。 |
$ | 匹配行尾。例如:hello$会匹配以 hello 结尾的行。 |
[] | 匹配中括号中指定的任意一个字符,只匹配一个字符。例如:[aoeiu] 匹配任意一个元音字母,[0-9] 匹配任意一位数字,[a-z][0-9]匹配小写字和一位数字构成的两位字符。 |
[^] | 匹配除中括号的字符以外的任意一个字符。例如:[^0-9] 匹配任意一位非数字字符,[^a-z] 表示任意一位非小写字母。 |
\ | 转义符。用于取消讲特殊符号的含义取消。 |
{n} | 表示其前面的字符恰好出现 n 次。例如:[0-9]{4} 匹配 4 位数字,[1][3-8][0-9]{9} 匹配手机号码。 |
{n,} | 转表示其前面的字符出现不小于 n 次。例如: [0-9]{2,} 表示两位及以上的数字。 |
{n,m} | 表示其前面的字符至少出现n次,最多出现m次。例如:[a-z]{6,8} 匹配 6 到 8 位的小写字母。 |
变量的使用与输入输出
变量的定义与引用
- 变量的定义
(1)shell中的变量名可以用字母、数字、下划线组成,但数字不能作为变量名的第一个字符。
(2)通过赋值符号“=”来定义一个变量的值
myname='jason' #字符串类型,不解析任何字符
var="abcd" #双引号内部会解析$和反斜杠特殊字符
sum=100;price=1.24
now_date=`date` #反引号执行系统命令
shell的变量类型只有字符串类型,当不用引号引起来的时候,要保证变量的值不包含特殊的符号,如空格符、$、&
- 变量的引用
(1)变量的引用使用美元符号$
加变量名,来引用一个变量的值
如:定义变量:program_name="httpd"
引用变量:echo $program_name
或echo ${program_name}
(2)变量名外面的花括号
是可选的,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
#!/bin/bash
for skill in php java linux db2
do
echo "I am good at ${skill}Script" #帮助shell接收器识别边界
done
环境变量、局部变量以及预定义变量
环境变量
- 环境变量的定义
指再操作系统中指定操作系统运行环境的一些参数,如PATH、PWD、USER、当前使用的SHELL名称等。 -
常见的环境变量
PATH:系统路径
HOME:当前用户家目录
HISTSIZE:保存历史命令记录的条数
LOGNAME:当前用户登录名
HOATNAME:主机名称,若应用程序要用到主机名的话,一般是从这个环境变量中取得
SHELL:当前用户用的是哪种shell
LANG/LANGUAGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量
MAIL:当前用户的邮件存放目录 -
查看环境变量
env:显示所有环境变量
局部变量
局部变量包括:
1.在shell脚本中由用户自定义的变量
shell脚本中定义的变量作用域是从被定义的地方开始,到shell结束为止,起作用域为本脚本,离开本脚本,变量无效。
2.在用户登录的shell中定义的变量,重新登录后该变量消失。
预定义变量
预定义变量和环境变量雷系,也是在shell一开始就定义了的变量所不同的是,用户只能根据shell的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的shell预定义变量有:
- $# 位置参数的数量
- $* 所有位置参数的内容
- $? 命令执行后返回的状态。 # 0表示成功,非0表示失败
- $$ 当前进程的进程号
- $! 后台运行的最后一个进程号。 #很少用,了解即可
- $0 当前执行的进程名
脚本的输入和输出
- echo输出
- printf输出
- read输入
- <<按行输入