目录
一:shell脚本
1.shell概述
2.linux中包含的常用shell
3.shell脚本概述
4.shell脚本应用场景
5.shell脚本的作用
6.用户的登录shell
二: 编写脚本
1.脚本的基本格式
2.shell脚本的执行
3. 交互式硬件设备
4.重定向操作
5.管道操作符号 “|”
三:shell变量
1.变量的作用
2.变量的类型
3.定义新变量
4.赋值时使用引号
5. 从键盘输入内容为变量赋值
6.设置全局变量
7.整数变量
8.环境变量
9.只读变量
10.位置变量
11.预定义变量
总结:
一:shell脚本
1.shell概述
shell是一个命令解释器,它是介于系统内核与用户之间,负责解释命令行,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出到屏幕反馈给用户。这种对话方式可是交互也可以是非交互式的。
2.linux中包含的常用shell
(1)bash:基准于GNU的框架下发展出的shell
(2)csh:语法有点类似于c语言的shell
(3)tcsh:整合了csh,提供更多的功能
(4)sh:已经被bash所替换
(5)nologin:奇怪的shell,这个shell可以让用户无法登录主机
(6)bash(/bin/bash):是目前大多数linux版本采用的默认的shell
3.shell脚本概述
shell脚本(shell script)就是将要执行的命令按顺序保存到一个文本文件,并给该文件可执行权限,方便一次性执行的一个程序文件。主要是方便管理员进行设置或管理,可结合各种shell控制语句以完成更复杂的操作。常用于重复性操作、批量事物处理、自动化运维、服务运行状态监控、定时任务执行等。
4.shell脚本应用场景
(1)重复性操作
(2)交互性任务
(3)批量事务处理
(4)服务运行状态监控
(5)定时任务执行
5.shell脚本的作用
(1)自动化运维
(2)批量化重复操作可以编写脚本结合计划任务自动周期运行
(3)减轻管理员工作量
(4)提高处理文件文本的速度
(5)避免配置出错
6.用户的登录shell
登录后默认使用的shell程序,一般为/bin/bash,不同shell的内部指令、运行环境等会有所区别。
[root@localhost ~]# cat /etc/shells
二: 编写脚本
1.脚本的基本格式
(1)脚本申明(解释器):若第一行为 "#!/bin/bash” ,表示此行以下的代码语句是通过 /bin/bash程序来执行,#!/bin/bash 为默认解释器。还有其他类型的解释器,比如 #!/usr/bin/python、 #!/usr/bin/expect。
(2)注释信息:以 "#" 开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。
(3)可执行语句:比如 echo 命令,用于输出" "之间的字符串
2.shell脚本的执行
(1)方法一:指定路径的命令,要求文件必须有 x 权限
chmod +x /root/first.sh
指定绝对路径:/root/first.sh
指定相对路径:./first.sh
注:系统会自动创建一个子shell环境去运行,但是当前shell环境不会受到影响。
(2)方法二:通过bash、sh命令执行
[root@localhost opt]# bash first.sh
[root@localhost opt]# sh first.sh
注:系统会自动创建一个子shell环境去运行,但是当前shell环境不会受到影响。
(3)方法三:通过source命令执行
[root@localhost opt]# source first.sh
[root@localhost opt]# . first.sh
注:执行 source、“.”命令时,脚本在当前shell环境运行,会受到影响,切换目录
3. 交互式硬件设备
类型 | 设备文件 | 文件描述编号 | 默认设备 |
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
(1)标准输入:从该设备接收用户输入的数据
(2)标准输出:通过该设备向用户输出数据
(3)标准错误:通过该设备报告执行出错信息
4.重定向操作
类型 | 操作符 | 用途 |
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | > | 将输出结果保存到指定的文件(覆盖原有内容) |
>> | 将输出结果追加到指定的文件尾部 | |
标准错误输出 | 2> | 将错误信息追加到指定的文件中(覆盖原有内容) |
2>> | 将错误信息追加到指定的文件中 | |
混合输出 | &> | 将标准输出、标准错误的内容保存到同一个文件中 |
2>&1 | 将标准错误输出重定向到标准输出 |
(1)重定向输入
(2)重定向输出
(3)标准错误输出
(4)混合输出
(5)混合输出 2>&1
2指向1,2的错误信息和1一起指向指定的文间
5.管道操作符号 “|”
将左侧的命令输出结果,作为右侧命令的处理对象
三:shell变量
1.变量的作用
用来存放系统和用户需要使用的特定参数(值)
变量名:使用固定的名称,由系统预设或用户定义
变量值:能够根据用户设置、系统环境的变化而变化
2.变量的类型
自定义变量:由用户自己定义、修改和使用
特殊变量:环境变量、只读变量、位置变量、预定义变量
3.定义新变量
变量名以字母或下划线开头,区分大小写,建议全大写
变量名=变量值 #定义一个新的变量 例:a=1
echo $变量名 #查看变量的值 例:echo $a
4.赋值时使用引号
双引号:允许通过$符号引用其他变量值
单引号:禁止引用其他变量值,$视为普通字符
反撇号:命令替换,提取命令执行后的输出结果
5. 从键盘输入内容为变量赋值
read [-p “提示信息”] 变量名
6.设置全局变量
(1)临时全局变量
设置临时全局变量后,重启后变量就没了
格式1:export 变量名...
格式2:export 变量名=变量值...
(2)永久全局变量
设置永久全局变量后,重启后变量依旧在
7.整数变量
expr 变量1 运算符 变量2 [运算符 变量3]...
echo $((变量1 + 变量2))
echo $[变量1 + 变量2]
let i++
let ++i
常用运算符:
加法运算:+
减法运算:-
乘法运算:\*
除法运算:/
求模(取余)运算:%
8.环境变量
由系统提前创建,用来设置用户的工作环境,配置文件:/etc/profile、~/.bash_profile
常见的环境变量:
- PATH:指定可执行程序的搜索路径。
- HOME:指定当前用户的家目录。
- LANG:指定当前系统的语言环境。
- SHELL:指定当前Shell的路径。
- PS1:指定Shell提示符的格式。
- PWD:指定当前工作目录。
- TERM:指定当前终端的类型。
- USER:指定当前用户的用户名
将opt目录下的文件加入到变量中,其中可执行文件在全局中直接使用,无需调用。
也可创建软链接 进行环境变量配置
9.只读变量
#用于变量值不允许被修改的情况
readonly name
10.位置变量
想要有10以上的数,需在变量两边加上{}
11.预定义变量
$#:表示命令行中位置参数的个数。
$*:表示所有位置参数的内容,这些内容当做一个整体
$@:表示列出所有位置参数,但是是以单个的形式的列出
$?:表示前一条命令执行后的返回状态,返回值为О表示执行正确,返回任何非О值均表示执行出现异常。
$0:表示当前执行的脚本或程序的名称
$$:表示返回当前进程的进程号
$!:返回最后一个后合进程的进程号
总结:
Shell脚本的内容构成:环境声明、注释文字、执行语句
重定向包括重定向输入、重定向输出、错误重定向
定义或赋值变量时,采用“变量名=变量值”的格式
赋值操作还可以使用单引号、双引号、反撇号、read命令等方式
查看或引用变量的值时,采用“$变量名”的格式
常见的特殊变量包括环境变量、只读变量、位置变量、预定义变量