基础部分
环境:
#!/bin/bash
运行脚本的参数 -x -n
运行方式:1)sh xx.sh 2)加x权限
变量:
a="x"
a=$a"y"
echo $a 输出xy
$a = ${a} = "${a}"
注:'$a' 指的是字符本身,而不是变量值
字符串:
"abc"=abc
如果字符串内容包括", 应该用转义符
那a=1 $a到底是数字 1,还是字符"1"
系统变量:
$1 $# $?
执行指令:
最普遍的形式:执行一个指令,将其打印出来的信息,赋值给一个变量 a = $(grep...)
()内的内容,有时不加"",有时加
判断逻辑:
[ a ] && b || c a为true,则执行b,否则执行c
如有多分支,或分支内的语句多,用if elif fi结构
注:test,case平常不用
判断逻辑的语法表格要熟练,包括:文件,字符串,数字 以及逻辑连接
逻辑连接优先用 [ -a ],而不是[] && []
只有一个判断逻辑,建议用[[]]; 如是[ -a ],不能用[[]]
循环逻辑:
while until for 3种语法,分别做1+2+..10
用for遍历一个目录下的所有文件
其他:
exit 0成功 其他值代表分支
> 应用
/dev/null
输入一段多行
不用深入细节:
只把关我要什么,不关心怎么做
日期
正则
sed s的局部替换
三大件
grep
1,过滤出cd
2,排除ef
3,过滤ifcfg中的inet这一行并排除127.0/172.0
4,输出以ipaddr开头的行
5,输出以ipaddr结尾的行
6,将没有root的行输出出来
7,ifcfg.* 列出所有包含ifcfg的文件
awk
1,过滤出cd以:号为分隔符
2,输出第一列匹配值为2的行
3,给出一个文档,列出该文档一共有几行,一共有几列(这个列是由逗号分隔的)
4,逻辑判断打印并输出一个文件下第2~3行的第一个字符
5,输出以ch开头的比那个且第三列中为root字符
6,输出第一列不以r开头的行
sed
1,用s的方法替换将文件中xy字样替换为 XY字样
2,用c来替换整行
3,在a.txt这个文本中写入一部分信息,用sed将a文本的信息全部导入到b文本中第二行后面
4,测试输出/home/a.txt这条件下前5行
5,测试并使用s来将root替换成ch
6,去掉c.txt这个文件中不输出以#号开头的行
7,在ch.txt这个文件中找到并且去掉#开头并将其中的ch替换成root,并输出
下面的图片是上面文字出题的三剑客的一个原搞,也就是说要是自己出题,出题是最能表现自己对于该东西的理解
出题前的准备
1,先看一边知识点 分为两种结合:视频+书籍 注意:边看遍思考,自己到底想要什么,该书籍或视频的价值在哪,能干什么用
2.,根据视频 有例题就跟着练习,一定是一边练习一边思考