1、什么是shell编程
1、解释执行器
1、sh
2、bash
## /etc/passwd查看用户默认bash, sh解释执行器没有高亮显示,也没有自动补全
2、shell编程
1、所有的shell程序都是以 .sh 结尾
2、执行方式
1、bash test.sh
2、chmod +x test.sh
./test.sh
## 保证文件中第1行为 :#!/bin/bash
3、shell基础
1、变量赋值
1、变量名=值 : =两侧不能有空格
number=10 name="张三丰"
2、获取Linux命令的执行结果给变量赋值
1、time=$(date)
2、time=`date`
3、接收用户从终端输入给变量赋值
read -p "提示信息" 变量名
read -p "输入姓名:" name
2、输出语句
echo $变量名
3、'' 和 "" 的区别
1、'' 无法获取变量的值
2、"" 可以获取变量的值
read -p "Input Name:" name
echo '名字是:$name' 结果:名字是:$name
echo "名字是:$name" 结果:名字是:张三丰
4、运算符
1、算术运算符
+ - * / %
++ :自加1运算
--
运算命令(let):
1、let运算表达式
i=1
let i++
echo $i #2
2、expr运算表达式
i=1
sum=`expr $i + 5`
echo $sum
2、比较运算符
1、文件状态
-e : 文件/目录是否存在
-d : 判断是否为目录
-f : 判断是否为文件
2、字符比较
= !=
空 :-z
非空 :!-z 或者 -n
3、数值比较
等于 :-eq
大于 :-gt
>= :-ge
小于 :-lt
<= :-le
不等于:-ne
4、逻辑比较
逻辑与 :&&
逻辑或 :||
5、if条件判断
1、语法格式
if [ 条件 ];then
执行语句
elif [ ];then
执行语句
else
执行语句
fi
2、输入2个数字,比较大小
6、for循环1
1、语法格式
for 变量名 in 值列表
do
执行语句
done
2、造数方法 :
seq 起始值 步长 终止值
seq 5 : 1 2 3 4 5
seq 1 2 10 : 1 3 5 7 9
seq 2 2 10 : 2 4 6 8 10
3、用for循环输出1 2 3 4 5
7、C-for循环
1、语法格式
for ((赋初值;条件判断;步长))
do
执行语句
done
2、C-for循环输出1 2 3 4 5
8、while循环
1、语法格式
while [ 条件 ]
do
执行语句
done
2、输出1-10之间的整数
9、函数
1、语法格式
函数名(){
代码块
}
# 函数调用
函数名
2、在用户主目录创建一个文件夹,如果不存在就创建,如果存在提示用户一下
事例:
1、每隔5分钟检查根分区使用量,低于20G时发出警告
#!/bin/bash
while [ 1 -eq 1 ]
do
h=`df -h | grep "/$" | awk '{print $4}' | awk -F "G" '{print $1}'`
if [ $h -lt 20 ];then
echo "根分区将满,请输出不必要的文件"
fi
sleep 300
done
2、计划任务+备份脚本(每天18:00做数据备份)
#!/bin/bash
day=$(date +%F)
dir=/home/tarena/mydir
mysqldump -hlocalhost -uroot -p123456 db5 > $dir/db5-$(date +%F).sql &>
/dev/null
echo "数据库备份成功"
计划任务操作:
crontab -e
0 18 * * * bash /home/tarena/sh/backup.sh