linux-- shell 编程
1、shell 是什么
2、shell 脚本的执行方式
3、shell 变量
3.1、系统变量
3.2、自定义变量
3.3、定义变量的规则
3.4、将命令的返回值赋给变量
4、环境变量
5、位置参数变量
6、预定义变量
7、运算符
8、判断语句
9、流程控制 if、elif
10、流程控制 case
11、流程控制 for
12、流程控制 while
13、读取控制台输入
14、shell 系统函数
15、自定义函数
16、shell 定时维护数据库
1、shell 是什么 <--返回目录
shell 是一个命令行解释器,它为用户提供了一个向 linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 shell 来启动、挂起、停止甚至是编写一些程序。
2、shell 脚本的执行方式 <--返回目录
1)脚本以 #! /bin/bash 开头
2)脚本需要有可执行权限
编写第一个 shell 脚本:创建一个 shell 脚本,输出 hello world!
vim myshell.sh
执行:sh myshell.sh
执行: ./myshell.sh
脚本的执行方式
方式1:输入脚本的绝对路径或相对路径
1)首先要赋予 xx.sh 脚本 +x 权限
2)执行脚本
方式2:sh xx.sh
说明:不需要赋予脚本 +x 权限,直接执行即可
3、shell 变量 <--返回目录
shell 中的变量分为:系统变量和用户自定义变量。
3.1、系统变量 <--返回目录
系统变量:$HOME、$PWD、$SHELL、$USER等。
显示当前shell中的所有变量: set
3.2、自定义变量 <--返回目录
定义变量 A(等号两边不能有空格)
撤销变量 A
声明静态的变量 B = 2, 不能 unset
可把变量提升为全局环境变量,可供其他 shell 程序使用: export 变量名=变量值 (将shell变量输出为环境变量)
3.3、定义变量的规则 <--返回目录
1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2)等号两侧不能有空格
3)变量名称一般习惯用大写
3.4、将命令的返回值赋给变量 <--返回目录
A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
A=$(ls -la) 等价于反引号
4、环境变量 <--返回目录
基本语法:
1)export 变量名=变量值 (将shell变量输出为环境变量)
2)source 配置文件
3)echo $变量名
例子:在/etc/profile 文件中定义 JAVA_HOME 环境变量,查看环境变量的值。新写一个shell程序,使用 JAVA_HOME
vim /etc/profile
source /etc/profile
新开一个 terminal, 无法使用 $JAVA_HOME
5、位置参数变量 <--返回目录
当我们执行一个 shell 脚本时,如果希望获取命令行的参数信息,就可以使用到位置参数变量。
基本语法:
1)$n: 功能描述,n 为数字,$0 代表命令本身, $1~$9 代表第一个到第九个参数,十以上的参数,要用大括号包裹,如 ${10}
2)$*: 这个变量代表命令行中所有的参数,$* 把所有的参数看成一个整体
3)$@: 这个变量也代表命令行中所有的参数,不过 $@ 把每个参数区分对待
4)$#: 这个变量代表命令行中所有参数的个数
vim ./myshell.sh a b
./myshell.sh a b
6、预定义变量 <--返回目录
预定义变量:shell 设计者预先定义好的变量,直接可以使用
$$: 当前进程的进程号(PID)
$!: 后台运行的最后一个进程的进程号(PID)
$?: 最后一次执行的命令的返回状态。如果值为 0,证明上一个命令正确执行;如果非 0, 执行不正确。
./myshell.sh a b &: 中的 & 表示后台运行
7、运算符 <--返回目录
8、判断语句 <--返回目录
案例1:"abc" 是否等于 "abc"
案例2: 10 是否大于等于 7
案例3: /root/abc.log 文件是否存在
9、流程控制 if、elif <--返回目录
10、流程控制 case <--返回目录
案例:当命令行参数是1,输出”Monday“;为2,输出“Tuesday”,其他情况,输出“Others”
11、流程控制 for <--返回目录
案例1:打印命令行参数
案例2: 计算 1 + 2 + ... + 100 的值
12、流程控制 while <--返回目录
13、读取控制台输入 <--返回目录
等待输入 5 秒
14、shell 系统函数 <--返回目录
案例:返回 /home/oy/Desktop/abc.log 的 abc.log
案例:返回 /home/oy/Desktop/abc.log 的 /home/oy/Desktop
15、自定义函数 <--返回目录
16、shell 定时维护数据库 <--返回目录
需求分析:
1)每天凌晨 2:10 备份数据库 testdb 到 /data/backup/mydqldb
2)备份开始和备份结束能够给出响应的提示信息
3)备份后的文件要求以备份时间为文件名,并打包成 .tar.gz 的形式,比如 2020-06-03_230201.tar.gz
4)在备份的同时,检查是否有 10 天前备份的数据库文件,如果有就将其删除
思路:
编码:
crontab -e
---
posted on 2020-05-31 23:00 wenbin_ouyang 阅读(123) 评论(0) 编辑 收藏 举报