shell脚本学习积累

news2024/11/25 14:36:40

文章目录

  • 创建shell脚本并运行
  • 条件测试
  • 基础shell脚本
    • 打包过去24小时内修改过的文件
    • 自动解压 bzip2, gzip 和 zip不同类型的压缩包
    • 打印一个rpm包的统计信息【含有输入参数】

创建shell脚本并运行

方式1:
vim myshell.sh
#文件开头是#!/bin/bash 或 #!/bin/sh
sh myshell.sh

方式2:
vim myshell
#需要设置文件为可执行的状态
chmod +x myshell
#作为可执行文件直接执行,有的后面可带输入参数
./myshell

条件测试

博主-条件测试传送门

&&的妙用,并用echo来反馈前一个命令任务是否成功:

基础shell脚本

打包过去24小时内修改过的文件

#!/bin/bash
tar -zcvf lastmodify.tar.gz `find . -mtime 1 -type f -print`

注意`` 可以将【一个命令的输出】作为作为【另一个命令的输入参数】,其中mtime是过去24小时修改的意思

自动解压 bzip2, gzip 和 zip不同类型的压缩包

创建一个smartzip的脚本实现,能实现自动的解压缩bzip2, gzip 和 zip不同类型的压缩包。
思路:利用file命令首先判断文件的类型,按照字符串的匹配来使用不同的解压缩命令进行解压缩

#!/bin/sh
# USAGE:smartzip file.zip
# EXAMPLE:smartzip articles.zip

#ftype变量是查询文件类型后的字符串信息,利用case来进行字符串匹配
#$1 就是脚本命令中输入参数的第一个
ftype=`file "$1"`
case "$ftype" in
#file查出的信息开头就是那个文件的名字,所以字符串拼接头就是$1,冒号后开始具体的文件类型
"$1: Zip archive"*)
unzip "$1" ;;
"$1: gzip compressed"*)
gunzip "$1" ;;
"$1: bzip2 compressed"*)
bunzip2 "$1" ;;
*) error "File $1 can not be uncompressed with smartzip";;
esac

case的脚本语法形式为:

打印一个rpm包的统计信息【含有输入参数】

vim一个showrpm的脚本文件,同时chmod +x showrpm命令

#!/bin/sh
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm  <-- 实现查看某个文件下的rpm包的统计信息
# 正常测试:需要使用./showrpm rpmfile1 rpmfile2 来完成

for rpmpackage in $*; do
# -r判断这个变量属性是否可以read
if [ -r "$rpmpackage" ];then
echo "=============== $rpmpackage =============="
rpm -qi -p $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
fi
done

注意这里的$*表示输入行命令参数的所有值,如果是$1表示输入命令行参数中的第一个参数。

for-loop的脚本语法形式为

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/980477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小黑完成广播操比赛,荣获三等奖,回来晕车晚上弹琴的leetcode之旅:121. 买卖股票的最佳时机

小黑代码 class Solution:def maxProfit(self, prices: List[int]) -> int:# 数组长度n len(prices)# 最大利润profit 0# 中间变量min_ prices[0]# 遍历每一个数据作为买点for i in range(1, n):# 滚动获取最小值if prices[i] - min_ > profit:profit prices[i] - m…

无涯教程-JavaScript - BIN2HEX函数

描述 BIN2HEX函数将二进制数转换为十六进制。 语法 BIN2HEX (number, [places])争论 Argument描述Required/Optionalnumber 您要转换的二进制数。 数字不能超过10个字符(10位)。数字的最高有效位是符号位。其余的9位是幅度位。 负数使用二进制补码表示。 Requiredplaces 要…

Scrum敏捷模式的优势点、实践经验及适用企业

Scrum敏捷模式是一种灵活、适应性强的开发方法&#xff0c;其核心理念是以短周期、高频率的方式进行项目开发&#xff0c;确保团队能够快速响应变化。 Scrum包含三个角色&#xff1a;产品负责人&#xff08;Product Owner&#xff09;、Scrum Master和开发团队&#xff08;Tea…

IntelliJ IDEA远程调试:使用IDEA Remote Debug进行高效调试的指南

引言 在开发分布式系统时&#xff0c;调试是一个重要但复杂的环节。开发者通常需要跨越多个服务、模块和线程来追踪和解决问题。在没有远程调试的情况下&#xff0c;许多开发者会在代码中添加各种日志语句&#xff0c;然后重新部署和上线来调试。这种方法不仅费时&#xff0c;…

Unity 编辑器资源导入处理函数 OnPostprocessTexture :深入解析与实用案例

Unity 编辑器资源导入处理函数 OnPostprocessTexture 用法 点击封面跳转下载页面 简介 在Unity中&#xff0c;我们可以使用编辑器资源导入处理函数&#xff08;OnPostprocessTexture&#xff09;来自定义处理纹理资源的导入过程。这个函数是继承自AssetPostprocessor类的&…

Seal梁胜:近水楼台先得月,IT人员应充分利用AI解决问题

2023年9月2日&#xff0c;由平台工程技术社区与数澈软件Seal联合举办的⌈AIGC时代下的平台工程⌋——2023平台工程技术大会在北京圆满收官。吸引了近300名平台工程爱好者现场参会&#xff0c;超过3000名观众在线上直播平台观看了本届大会。 数澈软件 Seal 联合创始人梁胜博士和…

mysql文档--默认存储引擎--innodb存储引擎--innodb引擎全解

阿丹&#xff1a; 在mysql中innodb是默认的存储引擎。研究一下为什么它会被独宠。 官方解释&#xff1a; InnoDB&#xff0c;是MySQL的数据库引擎之一&#xff0c;现为MySQL的默认存储引擎&#xff0c;为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发&#xf…

活动报名场地预约自定义表单小程序开发

活动报名场地预约自定义表单小程序开发 专门为活动报名开发的一款小程序&#xff0c;可以自定义各种活动报名、活动预约&#xff0c;支持付费预约报名。 功能&#xff1a; 自定义字段&#xff1a;字符串、单选、复选、日期、列表、图片、城市、关联字段等自定义字段类型配置…

浅谈 Node.js 与快速入门使用——前端开发工程师必须要知道的技术(文末送书福利6.0)

文章目录 &#x1f4cb;前言&#x1f3af;什么是 Node.js&#x1f3af;安装与使用 Node.js&#x1f9e9;直接安装 Node.js&#x1f9e9;使用 Node Version Manager&#xff08;NVM&#xff09;&#x1f9e9;使用 Node.js &#x1f3af;Node.js 基础知识&#x1f9e9;模块系统&a…

matplotlib 使用

import matplotlib.pyplot as plt %matplotlib inlineplt.figure()#创建一个画布 plt.plot([1, 0, 9], [4, 5, 6])#点数据&#xff0c;横坐标&#xff0c;纵坐标&#xff0c;相当于&#xff08;1&#xff0c;4&#xff09;&#xff08;0&#xff0c;5&#xff09;&#xff08;9…

蒙特卡洛仿真

首先打开ADE&#xff0c;设置好要仿真的analysis以及output&#xff0c;工艺角选择mc 在ADE里面选择Launch-ADE XL&#xff0c;勾选想要仿真的输出(我这里要仿真的是DC电压)。 下图的输出结果要起好名字、type里面signal出来的结果是曲线图柱状图。expr&#xff08;表达式&…

天纵竞赛系统助力22届汉语桥世界大学生中文比赛

由教育部中外语言交流合作中心主办的第22届“汉语桥”世界大学生中文比赛在广西举行。本届比赛共有来自120个国家的138名选手参加。“汉语桥”世界大学生中文比赛创办20多年来&#xff0c;吸引了全球160多个国家和地区的150多万青年学子参与&#xff0c;已成为具有世界影响力和…

如何实现OPC UA远程通讯?

目录 一. 准备工作 1.1 在对接前我们需准备如下物品 1.2 EG20网关准备工作 1.3 软件和下位机准备工作 二. EMCP平台设置 2.1 新增EG设备 2.2 网关绑定 2.3 通讯参数设置 2.4 创建设备驱动 2.5 报警信息设置 2.6 历史报表管理 2.7 画面组态 三. 实验效…

(2022|CVPR,LDM)使用潜在扩散模型进行高分辨率图像合成

High-Resolution Image Synthesis with Latent Diffusion Models 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 进交流群获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1 感知图像压缩 3.2 潜在扩散模型 3.3 调节机制 4. …

EF框架基础应用入门

文章目录 一、介绍二、EF6框架基础1. 数据模型和实体类2. 数据库上下文&#xff08;DbContext&#xff09;介绍3. 配置数据模型与数据库表的映射关系 两种方式Fluent API和数据注解Fluent API数据注解 4. 数据库迁移&#xff08;Migration&#xff09;概述a. 创建初始迁移b. 更…

需求评审时如何平衡团队成员间意见?

需求评审对于产品经理而言非常重要&#xff0c;通过需求评审我们可以提前规避可能的需求风险&#xff0c;减少因返工造成的资源浪费。如果不进行需求评审&#xff0c;这将直接影响项目的风险指数。 那么我们应该如何做好需求评审&#xff0c;有哪些需要注意的维度&#xff1f;如…

umi/max如何给请求增加公共header

直接上代码 根据 umi官网 介绍可知&#xff0c;umi/max仅提供一种运行时配置的方法。 如果是搭配typescript开发的话&#xff0c;最好使用umi/max提供的RequestConfig类型进行字段控制。 因为是在app.ts中添加的配置&#xff0c;但是并不知道该配置是在何时何地如何被使用的&…

swagger---接口文档管理生成管理工具

Swagger–接口生成工具 使用Swagger你只需要按照它的规范去定义接口及接口相关的信息&#xff0c;再通过Swagger衍生出来的一系列项目和工具&#xff0c; 就可以做到生成各种格式的接口文档&#xff0c;以及在线接口调试页面等等。 官网: https://lswagger.io/knife4j是为Jav…

业务逻辑漏洞复现

文章目录 一分钱买夹克任意商品购买 一分钱买夹克 登录portswigger&#xff0c;在all-labs中选择下面的题目&#xff1a; 打开后选择第一个商品&#xff1a; 打开后数量选择1&#xff0c;并用bp拦截数据包&#xff0c;点击添加购物车&#xff1a; 修改价格为1&#xff0c;点…

解密全产业供应关系,助力企业寻找客户资源,洞察商机

在当今商业竞争日益激烈的时代&#xff0c;企业要实现长期可持续的发展&#xff0c;需要深入了解供应链关系&#xff0c;抢先捕获商机&#xff0c;拓展优质的客户资源。然而&#xff0c;供应链关系错综复杂&#xff0c;商机、客户隐藏在其中&#xff0c;如何挖掘和洞察成为了企…