一、Shell基本介绍
1.shell介绍
shell是一个命令解析器,主要用来接受用户的指令,进入驱动操作系统,或硬件
2.shell存在交互和非交互(创建100个用户)
- 交互:登录Linux、useradd、passwd(重复100次)
- 非交互:创建100个用户的操作写入至一个文件中,然后去执行。(全程不需要用户参与)
3.什么是shell脚本
- 将系统命令堆积在一起,顺序执行(简称:系统命令堆积)
- 特定的格式+特定的语法+系统的命令=文件(Shell脚本文件)
二、学习Shell预备知识
- 熟练使用vim编辑器
- 熟练使用系统基础命令(useradd、w、awk…)
- 熟悉使用Linux、grep、awk、sed
如何学好Shell?
- 基础命令+基础服务+练习题+(思路)
- 能看懂——>照着抄写——>能修改——>能编写——>能优化脚本
三、Shell书写方式
- Shell脚本名称必须要含有a.sh、b.sh。建议命名的方式最好在30个字以内解决check_memory.sh
- shell脚本的格式(建议在文件的首行添加#!/bin/bash、#!/user/bash)
- shell脚本建议添加一些个注释
#!/bin/bash
#********************************************************************
#Author: xu
#QQ: 779115590
#Date: 2020-06-03
#FileName: read.sh
#Description: The test script
#********************************************************************
所有注释可以自动生成,vimrc
vimrc的应用
四、Shell执行方式
添加 #!/bin/bash 的作用
- 不添加
- 默认./运行时,系统会调bash来运行该脚本。
- 缺点:如果写的时python脚本,直接调用bash来运行则会报错
- 添加
- ./运行脚本,默认会读取该文件第一行,来确定使用什么解释器运行。
- 直接调用解释器运行(无需在意文件首行指定的解释器)
- python check_shell.sh
- bash check_shell.sh
(日常使用最多,确定了是一个shell脚本,所以会选择直接使用bash解析器运行该脚本文件)
五、shell变量
- 什么是变量
- 变量其实是shell传递数据的一种方式。以一个固定的字符串去表示一个不固定的值。便于后续的复原,以及维护。
- 变量的命名规范
- 命名规范:大小写、下划线拼接变量名尽量字母开头。(变量最好有含义,如果没有,容易忘记这个变量是做什么的。)
- 变量如何定义:变量名=变量值,等号是赋值。
- 变量定义的几种方式
- 用户自定义变量
[root@web01 ~]# var="hello world" # 定义变量(等号两边没有空格)
[root@web01 ~]# echo $var #$变量名
hello world
#使⽤$变量名 ${变量名} 区别?
[root@web01 ~]# echo $var_log
[root@web01 ~]# echo ${var}_log
hello world_log
# 单引号和双引号的区别?
[root@web01 ~]# var2=Iphone
[root@web01 ~]# echo "$var2 is good"
Iphone is good #双引号会解析中的$符号
[root@web01 ~]# echo '$var2 is good'
$var2 is good #写什么就是什么
什么时候使用单引号和双引号
- 如果你输出的结果中包含变量名需要解析,则建议使⽤双引号。
- 如果你输出的结果仅仅只是⼀个字符串,但⾥⾯存在特殊字符,那么你可以选择使⽤单引号。
- 系统环境变量,保存的是和系统操作环境相关的,所有⽤户都可以调⽤。
#系统已经定义好了⼀些个变量,供我们使⽤。(所有的⽤户都可以使⽤)
[root@web01 ~]# cat check_env.sh
#!/bin/bash
#********************************************************************
#Author: xu
#QQ: 779115590
#Date: 2020-06-03
#FileName: read.sh
#Description: The test script
#********************************************************************
echo "⽤户的家⽬录: $HOME"
echo "当前主机名是: