前言
一、Shell脚本概述
1.1.Shell是什么?
Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作指令(命令)并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。
- Bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell。
- 不同shell的内部指令、运行环境会有区别。
1.2.Shell脚本的概念
- 将要执行的命令按顺序保存到一个文本文件
- 需要给该文件可执行权限
- 可结合各种Shell控制语句以完成更复杂的操作
1.3.Shell脚本应用场景
- 重复性操作
- 交互性任务
- 批量事务处理
- 服务运行状态监控
- 定时任务执行
- …(等)
1.4.Linux中有哪些Shell?
我们可以使用 cat /etc/shells
命令查看系统安装的shell脚本解释器。
这些shell都是依据 Linux 发行者的不同所创造出的不同版本:
- bash:基准于GNU的框架下发展出的Shell。
- csh:语法有点类似于c语言的shell。
- tcsh:整合了csh,提供更多的功能。
- sh:已经被bash所替换。
- nologin:这个shell可以让用户无法登录主机。
bash (/bin/bash)是目前大多数Linux版本采用的默认Shell。
为什么系统上合法的shell要写入/etc/shells这个文件呢?
因为系统某些服务在运行过程中,会去检查用户能够使用的Shell,而这些shell的查询就是 借由/etc/shells
这个文件。
用户什么时候可以取得shell来工作?用户默认会去的哪一个shell?
当用户登陆的时候,系统会给我一个shell让我来用,而这个登录取得的shell记录在/etc/passwd
这个文件内。
二、Shell脚本的编写
2.1.Shell脚本的构成
- 脚本申明(解释器)∶若第一行为"
#!/bin/bash
",表示此行以下的代码语句是通过/bin/bash程序来解释执行,#!/bin/bash
为默认解释器。还有其它类型的解释器,比如#!/usr/bin/python
、#!/usr/bin/expect
。 - 注释信息:以
"#”
开头的语句表示为注释信息,被注释的语句在运行脚本时不会被执行。 - 可执行语句:比如
echo命令
,用于输出" "
之间的字符串
2.2.编写脚本代码
- 使用vim文本编辑器
- 编写时,每条linux命令按照执行顺序依次编写(每条命令独占一行)
示例:
vim /root/first.sh #编辑一个脚本文件,一般脚本文件都以“.sh”结尾,方便辨识
#!/bin/bash #脚本声明
#This is my first Shell-Script. #注释信息
echo "当前的目录位置位于:" #可执行语句
pwd
新建一个shell脚本文件
2.3.执行Shell脚本
方法一:直接访问文件,需要可执行权限(x)
刚创建一个文件后,默认是没有可执行权限的。
执行 chmod +x shell文件路径
,赋予执行权限。
chmod +x /root/first.sh
指定绝对路径:/root/first.sh
指定相对路径:./first.sh
方法二:指定Shell来解释脚本,不要求文件必须有 x 可执行权限。
sh