条件语句
一、if语句
1. if语句的结构
if 判段条件
then 条件为真的分支代码
elif 判断条件2
else 条件为假的分支代码
fi 结尾
2.单分支结构
单分支语句格式:
if 判断条件
then 条件成立的分支代码
fi
注意:条件不成立直接结束
示例:
3.双分支结构
双分支语句格式:
if 判断条件
then
条件成立的分支代码
else
条件不成立的分支代码
fi
示例:
4.多分支结构
多分支语句格式:
if 判断条件1
then
条件1为真的分支代码
elif 判断条件2
then
条件2为真的分支代码
elif 判断条件3
then
条件3为真的分支代码
...
else
以上条件都为假的分支代码
fi
示例:
二、case语句
case语句格式:
case 变量引用 in
模式1)
命令分支1
;;
模式2)
命令分支2
;;
...
*)
默认命令分支
esac
注意:case支持glob风格的通配符
- :任意长度任意字符
? :任意单个字符
[0-9] :指定范围内的任意单个字符
| :“或者”的意思,如: a|b
示例:
三、echo
echo命令:
echo -n :表示不换行输出
echo -e :表示输出转义符
常用的转义符:
| 选项 | 作用 |
|---|---|
| \r | 光标移至行首,并且不换行 |
| \s | 当前shell的名称,如bash |
| \t | 插入Tab键,制表符 |
| \n | 输出换行 |
| \f | 换行,但光标仍停留在原处 |
| \ | 表示插入""本身转义 |
| \b | 表示退格 不显示前一个字符 |
| \c | 抑制更多的输出或不换行 |
四、正则表达式过滤文本
1.元字符
元字符(字符匹配): . :匹配任意单个字符,可以是一个汉字。
[ ] :匹配指定范围内的任意单个字符,例如[zhou]: zhou中其中一个字符,[0-9] :数字0-9之间任意一个字符。
[^ ] :匹配指定范围外的任意单个字符,例如[^zhou]:除了zhou这几个字符以外的单个别的字符,[^a.z]:除了a和z之间还有一个字符不匹配外,匹配其他字符。
常用的正则表达式:
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
\w #匹配单词构成部分,等价于[_[:alnum:]]
\W #匹配非单词构成部分,等价于[^_[:alnum:]]
\S #匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\s #匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意
Unicode 正则表达式会匹配全角空格符
五、grep
grep命令格式: grep [选项]... 查找条件 目标文件
选项:
-i:查找时忽略大小写
-v:反向查找,输出与查找条件不相符的行
grep -Ev '^[[:space:]]*#|^$' /etc/fstab
-o 只显示匹配项
-f 对比两个文件的相同行
-c 匹配的行数
[root@localhost ky15]# grep -c root passwd 2
-color=auto #对匹配到的文本着色显示
-m # 匹配#次后停止
grep -m 1 root /etc/passwd #多个匹配只取第一个
-n 显示匹配的行号
-q 静默模式,不输出任何信息
-A # after, 后#行
grep -A3 root /etc/passwd #匹配到的行后3行业显示出来
-B # before, 前#行
-C # context, 前后各#行
-e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file
grep -e root -e bash /etc/passwd #包含root或者包含bash 的行
-w 匹配整个单词
-E 使用ERE,相当于egrep
-F 不支持正则表达式,相当于fgrep
-f file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-r 递归目录,但不处理软链接
-R 递归目录,但处理软链接