一、shell概述
shell 是一个命令行解释器,是外部程序和Linux内核的桥梁,接收用户命令,然后调用 操作系统内核,充当一个翻译官的角色。
二、shell脚本入门
shell脚本 以 #!/bin/bash 开头,指定解析器,shell脚本文件一般以.sh结尾,但是也可以没有
1、hello world
2、执行脚本的四种方式
-
sh 相对路径/.绝对路径
-
bash 相对路径/绝对路径
-
设置脚本文件有执行的权限后,直接 输入绝对路径或者相对路径执行
-
. / source 文件相对路径或绝对路径
前三种方式 是在当前shell中打开一个子shell 执行脚本内容,当脚本内容结束,则 子shell结束,回到父shell中。
第四种 是在当前shell中执行,无需打开子shell。
区别:在环境变量继承的关系上,如果子shell 设置的当前变量,父shell是不可见的
3、创建子shell
命令输入:bash 再执行就是在子bash下执行操作,exit退出当前子shell
三、变量
1、系统变量
-
env 查看系统变量
-
打印系统变量
如:echo $PATH
-
set | less 分页显示当前shell中所有变量
2、自定义变量
等号左右不能有空格,String 可以用”“
-
1、定义局部变量
aa=3 -
2、定义全局变量
将局部变量提升为 全局变量,export 变量名
如:export a -
3、全局变量和局部变量的区别
全局变量在所有的子shell中都可以获取值,局部变量只能在本shell中获取值
解析: 根据执行脚本的四种方式可知,./执行脚本是创建了一个子shell 去执行脚本,这个时候 new 局部变量在子shell中获取不到值,source 是在本shell中执行脚本,因此他可以获取到new的值,将new 改为全局变量,此时 ./ :子shell执行脚本也是可以拿到变量值的。 -
4、删除变量 unset 变量名
-
5、设置静态变量(常量):readonly 变量,不能用 unset
-
6、变量定义规则
-
7、初始变量计算
由于变量都是默认string类型,不支持数值运算,那么怎么进行变量计算呢
如下
3、特殊变量【参数输入】
-
1、获取输入的参数:$n
n 为数字,$0 代表该脚本名称,$1- 9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9 代表第一到第九个参数,十以 上的参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如{10})
-
2、获取参数个数:$#
-
3、获取全部参数 $* 和 $@
$*: 所有的参数看成一个整体
$@:所有参数看成集合中的元素
-
4、获取脚本返回结果:$?
:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行,反之,执行错误
四、运算符
语法:
$ ((运算式)) 或者 $[运算式]
五、条件运算
0 真 1 假
1、基础语法
-
1、test 表达式
表达式的 = 前后要有空格
-
2、[ 表达式 ]
表达式前后要有 空格
2、判断条件
-
1、 两个整数之间的比
-
2、文件权限判断
-
3、按照文件类型判断
-
4、多条件判断 [ 表达式 ] && 表达式为真执行 || 表达式为假执行这个
六、流程控制
1、if判断
1、单分支
2、多分支判断
2、case判断
注意事项
3、for循环
1、遍历打印输入的每个参数 $* 和 $@ 都代表全部参数集合
2、当 $* 被双引号”“包住时,所有参数会看作一个参数,只会循环一次
3、当 $@ 被双引号”“包住时,和没有双引号一个效果,会遍历循环所有参数
4、while
从1加到100
七、read读取控制台输入
八、函数
8.1、系统函数
8.1.1、basename
8.1.2、dirname
8.2、自定义函数
九、正则表达式
正则表达式通常被用来检索、替换那些符合某个模式的文本
十、文本处理工具
1、cut
cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
2、awk
一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理