当前位置: 首页 > news >正文

shell脚本实战案例

文章目录

  • 实战第一坑
  • 功能说明
  • 脚本实现

实战第一坑

实战第一坑:在Windows系统写了一个脚本,比如上面,随后上传到服务,执行会报错

原因:

在这里插入图片描述

解决方案:在linux系统touch文件,并通过vim添加内容,或者通过系统关联的编辑器编辑,坚决不能将win文件直接上传到linux系统

功能说明

# 功能说明:
#   读取CSV文件,文件内容如下,要求解压缩zip文件并命名为对应文件名称,并按日期存放到对应文件夹中,比如将2324c5b6-6ac2-4d15-9333-da25ae52dfac.zip解压#   缩命名为hrminput(1).xls,放到202304文件夹下
# 3,hrminput(1).xls,/usr/weaver/ecology/filesystem/202304/J/2324c5b6-6ac2-4d15-9333-da25ae52dfac.zip
# 4,hrminput(1).xls,/usr/weaver/ecology/filesystem/202304/V/d3842bc2-e9dc-4de0-8861-5745ea862ba0.zip
# 78,组织架构表-新.xls,/usr/weaver/ecology/filesystem/202304/G/c60f0d3f-31db-4fe4-8df9-65d8e9cfb19d.zip
# 79,组织架构表-新.xls,/usr/weaver/ecology/filesystem/202304/J/3b9096eb-76db-4a3e-b938-0b02156c1346.zip

脚本实现

#!/bin/bash
# 定义变量:变量名=变量值,注意等号两侧不能有空格,变量名一般习惯用大写,双引号""、单引号''都可以
csvFilePath="/root/queryRes.csv"# 读取CSV文件(有问题:最后一行读不到,所以csv文件必须多一条空行)
while IFS=, read -r DOCID IMAGEFILENAME FILEREALPATH; do # echo "文件序号:${DOCID} 文件名称:$IMAGEFILENAME  文件地址:$FILEREALPATH"# 1、检查文件路径是否存在if [ ! -f $FILEREALPATH ]; thenecho "文件不存在: $FILEREALPATH"continuefi# $FILEREALPATH = /usr/weaver/ecology/filesystem/202304/G/c60f0d3f-31db-4fe4-8df9-65d8e9cfb19d2.zip# 2、解压前的文件名称,并去掉后缀 2324c5b6-6ac2-4d15-9333-da25ae52dfac,通过basename命令 filename=$(basename $FILEREALPATH .zip)# 3、解压前的日期 202304【根据/分割,取倒数第三个值】date=$(echo $FILEREALPATH | awk -F'/' '{print $(NF-2)}')# 4、去除真实文件名称前后的尾随空格、双引号IMAGEFILENAME=$(echo $IMAGEFILENAME | tr -d ' ')IMAGEFILENAME=$(echo $IMAGEFILENAME | tr -d '"')echo "IMAGEFILENAME: $IMAGEFILENAME"# 5、解压文件,放到对应日期文件夹下mkdir -p /root/file/${date}unzip -o $FILEREALPATH -d /root/file/${date}# sleep 0.2s# 6、查找并重命名解压后的文件mv /root/file/${date}/${filename} /root/file/${date}/$IMAGEFILENAME
done < $csvFilePath    # 使用变量: $变量名、${变量名}都可以
echo "大功告成..."
http://www.lryc.cn/news/499096.html

相关文章:

  • OpenCV-图像阈值
  • lvgl9 Line(lv_line) 控件使用指南
  • 区块链概念 Web 3.0 实操
  • 【人工智能】大数据平台技术及应用
  • Scala的模式匹配(7)
  • 使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小
  • 数仓技术hive与oracle对比(五)
  • 金融数学在股市交易中的具体应用
  • Spring6:1 概述
  • Python Selenium 各浏览器驱动下载与配置使用(详细流程)
  • C语言期末考试——重点考点
  • mongo开启慢日志及常用命令行操作、数据备份
  • Mybatis-Plus的主要API
  • 2023 年“泰迪杯”数据分析技能赛B 题企业财务数据分析与造假识别
  • 【SpringMVC】参数传递 重定向与转发 REST风格
  • 性能测试需求分析(超详细总结)
  • 显卡(Graphics Processing Unit,GPU)架构详细解读
  • 【大语言模型】ACL2024论文-24 图像化歧义:Winograd Schema 挑战的视觉转变
  • AcWing 2868. 子串分值
  • 如何进行 JavaScript 性能优化?
  • 使用TCP编程实现简单登录功能
  • 卷积神经网络(CNN)的层次结构
  • 操作系统文件管理相关习题2
  • react 通过ref调用子组件的方法
  • 【计算机网络】 —— 数据链路层(壹)
  • AcWing 93. 递归实现组合型枚举
  • vscode 折叠范围快捷键
  • RabbitMQ 实现分组消费满足服务器集群部署
  • Chromium网络调试篇-Fiddler 5.21.0 使用指南:捕获浏览器HTTP(S)流量(二)
  • 个人IP建设:简易指南