linuxshell简介Shell是一个命令行解释器,为用户提供一个接口系统程序,向Linux内核发送请求以运行程序。使用Shell启动、暂停和停止某些程序。1、shell脚本格式要求脚本以#!/bin/bash开头脚本需要有可执行权限,或者以shtest.sh的形式执行2、shell变量介绍系统变量:$HOME、$PATH,$PWD...,执行命令集查看所有系统变量自定义变量:定义变量:变量名=A销毁变量:unset变量名声明静态变量:只读变量,注意:定义变量的规则不能被销毁:有变量名和等号之间不能有空格空格命名只能使用英文字母、数字和下划线,首字符不能以数字开头,不能使用标点符号,不能使用bash中的关键字(使用help命令查看保留关键字)将命令的返回值赋给一个变量方法一:#!/bin/bashA=`date`echo$A方法二:A=$(date)echo$A//MonMay2418:35:05CST2021position参数变量:在脚本中可以获取到参数信息$n,n代表一个数字,1是执行脚本的第一个参数,2是执行脚本的第二个参数,以此类推。..当n大于等于10时,参数变量需要用大括号括起来,例如${n}$#,获取传递给脚本的参数个数$*,显示传递给脚本的所有参数单个字符串$@中的脚本,与$*相同,但使用时加引号,返回引号内的每个参数。预定义变量$$,获取运行脚本的当前进程ID号$!,以及后台运行的最后一个进程的ID号$?,显示最后一个命令的退出状态。0表示没有错误,任何其他值表示错误。3、基本运算符算术运算符:原生bash不支持简单的数学运算,但可以通过其他命令实现,比如awk和expr,其中expr是最常用的。#!/bin/bash1.UseexprTEMP=`expr2+3`VAL=`expr$TEMP\*4`//输出202.Use$((运算表达式))VAL=$(((2+3)*4))//输出20个关系运算符:只支持数字,不支持字符串,除非字符串的值是数字。#!/bin/bashif[23-ge22]thenecho"greaterthanorequalto"fi字符串运算符#!/bin/bashif['ok'='ok']thenecho"equal"fiif[-n'abc']thenecho'字符串的长度不为零'fi文件测试操作符:文件测试操作符用于检测Unix文件的各种属性。#!/bin/bashif[-f/root/shell_code/hello.sh]thenecho'/root/shell_code/hello.shisafile'fi布尔运算符:#!/bin/bashif[!false]thenecho'true'fiif[1-lt2-o2-lt3]然后echo'true'fi4.流控ifelse#!/bin/bashif[10-gt$A]thenecho"10isgreaterthan$A"elif[10-gt$b]thenecho"10isgreaterthan$B"elif[10-gt$C]thenecho"10isgreaterthan$C"elseecho"nothing"fiforloop#!/bin/bashforvarin12345doecho$vardonewhile#!/bin/bashint=1while[$int-le5]doecho$intlet"int++"donecase...esac#!/bin/bashvalue=2case$valuein1)echo1;;2)回声2;;3)回声3;;*)echo'匹配失败';;esac5.综合案例需求分析:每天凌晨2点30分将数据库test备份到/data/backup/mysql,记录备份的起止时间备份后的文件以时间格式命名,打包成.tar.gz文件.备份时查看是否有10天前的备份文件,并删除。#!/bin/bash#备份目录BACKUP=/data/backup/mysql#当前时间DATETIME=$(date+%Y%m%d%H%M%S)#数据库地址HOST=localhost#数据库名称DATABASE=test#数据库账号DB_USER=root#数据库密码DATABASEDB_PWD=root#创建备份目录,如果不存在则创建[!-d"${BACKUP}/${DATETIME}"]&&mkdir-p"${BACKUP}/${DATETIME}"#备份数据库mysqldump-u${DB_USER}-p${DB_PWD}--host=${主机}-q-R--databases${DATABASE}|gzip>${BACKUP}/${DATETIME}/${DATETIME}.sql.gz#将文件处理成tar.gzcd${BACKUP}tar-zcvf$DATETIME.tar.gz${DATETIME}#删除备份源directoryrm-rf${BACKUP}/${DATETIME}#删除10天前的备份文件find${BACKUP}-atime+10-name"*.tar.gz"-execrm-rf{}\;echo"Backupdatabase${DATABASE}ok..."//crontab定时任务设置:302***/root/shell_code/mysql_db_backup.sh
