(CN) Shell Programming
Shell编程
代码在
AllmyCodes/code/shcode
中
一 shell编程
-
定义: Shell是一个命令行解释器,为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序
-
脚本格式:
#!/bin/bash
开头,且需要有可执行权限 -
常用的执行方式:
chmod u+x xxxx.sh
之后./xxxx.sh
sh xxxx.sh
不需要加权限就可以执行
-
shell变量:
- 系统变量:
$HOME
,$PWD
,$USER
等
set
查看shell中所有变量-
自定义变量:
变量名=值
撤销变量
unset 变量
声明静态变量:
readonly 变量
,不能unset
- 系统变量:
-
变量定义规则:
-
设置环境:
基本语法:
export 变量名=变量值
将shell变量输出为环境变量source 配置文件
让修改后的配置信息立即生效echo $变量名
查询环境变量的值
-
shell 脚本的多行注释
:<<! 内容 !
-
位置参数变量:
-
预定义变量:
-
运算符:
-
条件判断:
基本语法:
[ condition ]
注意condition前面有空格非空返回true
-
流程控制:
-
case 语句:
-
for 循环:
-
while 循环
-
read读取控制台输入
-
系统函数
basename [path] [suffix 后缀]
返回文件名常用于获取文件名
dirname 绝对路径
返回文件的路径
-
自定义函数
二 综合案例
定时备份数据库
思路:
# Codes
#!/bin/bash
#backup
BACKUP=/data/backup/db
#current Time
DATETIME=$(date +%Y-%m-%d_%H%M%S)
#db addr
HOST=localhost
#db info
DB_USER=root
DB_PW=123456
DB_NAME=testDB
#create the path and file
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
#backup database
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DB_NAME} | gzip > ${BACKUP}/${DATETIME}/($DATETIME.sql.gz)
#make file into tar.gz
cd ${BACKUP}
tar -zcvf ($DATETIME.tar.gz) ${DATETIME}
#delete the directory been tar.gz
rm -rf ${BACKUP}/${DATETIME}
#delete the backup file made 10 days ago
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
#output the result
echo "backup done"
#use crontab to execute the script
#input the code below in the commendline
# crontab -e
# 30 2 * * * /mysql_db_backup.sh