一、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
一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行分析处理



本文介绍了Linux Shell的基本概念,包括其作为命令行解释器的作用。讲解了Shell脚本的编写与执行方式,特别是环境变量的继承关系。详细阐述了变量的使用,包括系统变量、自定义变量、局部与全局变量的区别,以及如何删除和设置静态变量。此外,还涵盖了参数输入、运算符、条件运算和流程控制结构,如if、case、for和while循环。同时,提到了read命令用于读取用户输入,以及函数和正则表达式的基础应用。最后,文章提及了文本处理工具cut和awk的功能。
3481

被折叠的 条评论
为什么被折叠?



