Linux命令全解(12)

dirname:功能为返回完整路径最后/的前面部分 , 常用于返回路径部分
dirname /home/aaa/test.txt--/home/aaa

  • 自定义函数
    function funname (){Action;[return int;]}#调用时直接写函数名:funname [参数值]#案例1:计算输入的两个参数的和(动态获取)vim testFunc.sh#!/bin/bash#定义函数function getSum(){SUM=$[$n1+$n2]echo "和=$SUM"}#控制台输入两个值read -P "请输入一个数n1=" n1read -P "请输入一个数n2=" n2#调用getSum $n1 $n2
  • Shell编程综合案例
    • 需求分析:
      1.每天凌晨2:30备份数据库hspedu到 /data/backup/db
      2.备份开始和结束能够给出相应的提示信息
      3.备份后的文件要求以备份时间为文件名 , 并打包成.tar.gz的形式 , 比如2021-04-10_104515.tar.gz
      4.在备份的同时 , 检查是否有10天前备份的数据库文件 , 如果有就将其删除
    #!/bin/bash#备份目录BACKUP=/data/backup/db#获取当前时间DATETIME=$(date +%Y-%m-%d_%H%M%S)#数据库的地址HOST=localhost#数据库用户名DB_USER=root#数据库密码DB_PW=root#备份的数据库DATABASE=hspedu#创建备份目录 , 如果不存在就创建 , 如果存在就直接使用[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"#! -d 表示如果不是一个目录{}为可选的#备份数据库-q -R表示若有多个数据库都备份mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --datebases ${DATABASE} | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz#将文件处理成tar.gz形式cd ${BACKUP}tar -zcvf $DATETIME.tar.gz ${DATETIME}# 将${DATETIME}压缩为$DATETIME.tar.gz#删除备份的文件夹目录及之下的文件rm -rf ${BACKUP}/${DATETIME}#检查是否有十天前备份的文件 , 将其删除find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;#-atime +10 查找十天前创建的备份文件echo "备份数据库${DATABASE}成功"#设置定时任务crontab -e30 2 * * * /usr/sbin/mysql_db_backup.sh(以上所写脚本文件所在目录)
  • 日志
    Linux命令全解

    文章插图
    expr命令用于求表达式的值 , 格式为:
    expr 表达式
    表达式说明:
    用空格隔开每一项用反斜杠放在shell特定的字符前面(发现表达式运行错误时 , 可以试试转义)对包含空格和其他特殊字符的字符串要用引号括起来expr会在stdout中输出结果 。如果为逻辑关系表达式 , 则结果为真 , stdout为1 , 否则为0 。expr的exit code:如果为逻辑关系表达式 , 则结果为真 , exit code为0 , 否则为1 。字符串表达式
    length STRING返回STRING的长度index STRING CHARSETCHARSET中任意单个字符在STRING中最前面的字符位置 , 下标从1开始 。如果在STRING中完全不存在CHARSET中的字符 , 则返回0 。substr STRING POSITION LENGTH返回STRING字符串中从POSITION开始 , 长度最大为LENGTH的子串 。如果POSITION或LENGTH为负数 , 0或非数值 , 则返回空字符串 。示例:
    str="Hello World!"echo `expr length "$str"`# ``不是单引号 , 表示执行该命令 , 输出12echo `expr index "$str" aWd`# 输出7 , 下标从1开始echo `expr substr "\$str" 2 3`# 输出 ell整数表达式
    expr支持普通的算术操作 , 算术表达式优先级低于字符串表达式 , 高于逻辑关系表达式 。
    + -加减运算 。两端参数会转换为整数 , 如果转换失败则报错 。* / %乘 , 除 , 取模运算 。两端参数会转换为整数 , 如果转换失败则报错 。() 可以改变优先级 , 但需要用反斜杠转义

    经验总结扩展阅读