1. 为什么要学习 Shell 编程
- Linux 运维工程师在进行服务器集群管理时,需要编写 Shell 程序来进行服务器管理。
- 对于 JavaEE 和 Python 程序员来说,工作的需要,会要求你编写一些 Shell 脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
- 对于大数据程序员来说,需要编写 Shell 程序来管理集群
2. Shell 是什么
- Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。看一个示意图:
3. Shell 脚本的执行方式
- 脚本格式要求
- 脚本以
#!/bin/bash
开头 - 脚本需要有可执行权限
- 编写第一个 Shell 脚本
需求说明:创建一个 Shell 脚本,输出hello world!
vim hello.sh
#!/bin/bash
echo "hello,world"
- 脚本的常用执行方式
- 方式 1(输入脚本的绝对路径或相对路径)
说明:首先要赋予hello.sh
脚本的+x
权限, 再执行脚本
比如./hello.sh
或者使用绝对路径/home/test/hello.sh
使用绝对路径执行:
- 方式 2(sh+脚本)
说明:不用赋予脚本+x
权限,直接执行即可。
比如sh hello.sh
, 也可以使用绝对路径
4. Shell 的变量
Shell 变量介绍
-
Linux Shell 中的变量分为,系统变量和用户自定义变量。
-
系统变量:
$HOME、$PWD、$SHELL、$USER
等等,比如:echo $HOME
等等
-
显示当前
shell
中所有变量:set
5. shell 变量的定义1
- 基本语法
- 定义变量:
变量名=值
,注意:不要用空格 - 撤销变量:
unset 变量
- 声明静态变量:
readonly 变量
,注意:不能unset
- 快速入门
- 案例 1:定义变量 A
#!/bin/bash
# 案例1:定义变量A
A=100
# 输出变量需要加上$
echo $A
加上输出变量名:
#!/bin/bash
# 案例1:定义变量A
A=100
# 输出变量需要加上$
echo A=$A
也可以用双引号括起来,输出结果是一样的:
echo "A=$A"
- 案例 2:撤销变量 A
#!/bin/bash
# 案例1:定义变量A
A=100
# 输出变量需要加上$
echo "A=$A"
# 案例2:撤销变量A
unset A
echo "A=$A"
3. 案例 3:声明静态的变量 B=2,不能 unset
#!/bin/bash
# 案例1:定义变量A
A=100
# 输出变量需要加上$
echo "A=$A"
# 案例2:撤销变量A
unset A
echo "A=$A"
# 案例3:声明静态的变量 B=2,不能 unset
readonly B=2
echo "B=$B"
静态变量不能 unset(撤销)
#!/bin/bash
# 案例1:定义变量A
A=100
# 输出变量需要加上$
echo "A=$A"
# 案例2:撤销变量A
unset A
echo "A=$A"
# 案例3:声明静态的变量 B=2,不能 unset
readonly B=2
echo "B=$B"
unset B
- 设置行号:
set nu
6. shell 变量的定义2
- 定义变量的规则
- 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
5A=200
(×) - 等号两侧不能有空格
- 变量名称一般习惯为大写, 这是一个规范,我们遵守即可
- 将命令的返回值赋给变量
- A=`date’ ,反引号,运行里面的命令,并把结果返回给变量 A
- A=$(date) 等价于反引
A=`date`=$(date)
- 案例:将指令返回的结果赋给变量
# 将指令返回的结果赋给变量
C=`date`
echo “C=$C”
或者
```bash
# 将指令返回的结果赋给变量
D=$(date)
echo “D=$D”