自定义变量:mysql
定义变量的规则:linux
将命令的返回值赋给变量sql
方式一: #!/bin/bash A=`date` echo $A 方式二: A=$(date) echo $A //Mon May 24 18:35:05 CST 2021
位置参数变量:能够在脚本中获取参数信息shell
$n
,n 表明一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……当n大于等于10时,参数变量须要用大括号包含,例${n}$#
,获取传递到脚本的参数个数$*
,以一个单字符串显示全部向脚本传递的参数$@
,与$*相同,可是使用时加引号,并在引号中返回每一个参数。预约义变量数据库
$$
,获取脚本运行的当前进程ID号$!
,后台运行的最后一个进程的ID号$?
,显示最后命令的退出状态。0表示没有错误,其余任何值代表有错误。算数运算符:原生bash不支持简单的数学运算,可是能够经过其余命令来实现,例如 awk 和 expr,expr 最经常使用。bash
#!/bin/bash 1.使用expr TEMP=`expr 2 + 3` VAL=`expr $TEMP \* 4` //输出 20 2.使用$((运算表达式)) VAL=$(((2 + 3) * 4)) //输出20
关系运算符:只支持数字,不支持字符串,除非字符串的值是数字。测试
#!/bin/bash if [ 23 -ge 22 ] then echo "大于等于" fi
字符串运算符命令行
#!/bin/bash if [ 'ok' = 'ok' ] then echo "equal" fi if [ -n 'abc' ] then echo '字符串长度不为零' fi
文件测试运算符:文件测试运算符用于检测 Unix 文件的各类属性。code
#!/bin/bash if [ -f /root/shell_code/hello.sh ] then echo '/root/shell_code/hello.sh 是一个文件' fi
布尔运算符:进程
#!/bin/bash if [ !false ] then echo 'true' fi if [ 1 -lt 2 -o 2 -lt 3 ] then echo 'true' fi
if else
#!/bin/bash if [ 10 -gt $A] then echo "10 大于 $A" elif [ 10 -gt $b ] then echo "10 大于 $B" elif [ 10 -gt $C ] then echo "10 大于 $C" else echo "啥也不是" fi
for 循环
#!/bin/bash for var in 1 2 3 4 5 do echo $var done
while
#!/bin/bash int=1 while [ $int -le 5 ] do echo $int let "int++" done
case ... esac
#!/bin/bash value=2 case $value in 1) echo 1 ;; 2) echo 2 ;; 3) echo 3 ;; *) echo '匹配失败' ;; esac
需求分析:
#!/bin/bash #备份目录 BACKUP=/data/backup/mysql #当前时间 DATETIME=$(date +%Y%m%d%H%M%S) #数据库地址 HOST=localhost #数据库名称 DATABASE=test #数据库帐号 DB_USER=root #数据库密码DATABASE DB_PWD=root #建立备份目录,若是不存在,就建立 [ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}" #备份数据库 mysqldump -u${DB_USER} -p${DB_PWD} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/${DATETIME}.sql.gz #将文件处理成 tar.gz cd ${BACKUP} tar -zcvf $DATETIME.tar.gz ${DATETIME} #删除备份源目录 rm -rf ${BACKUP}/${DATETIME} #删除10天前的备份文件 find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \; echo "备份数据库${DATABASE} ok..." //crontab定时任务设置:30 2 * * * /root/shell_code/mysql_db_backup.sh