shell的灵活运用 (函数,关联数组,循环,awk,sed等)
题目
提示:没有基础请先看看基础部分的讲解,否则看不懂
1,编写函数,实现判断是否无位置参数,如无参数,提示错误
代码:
#bash/bin
function a() {b=$# #判断传入的参数个数
# echo $bif [ $b -eq 0 ] # 看参数个数是不是等于0 thenecho "no"elseecho "yes"fi
}
a
1,当不传入参数时,结果为:
no
2,当传入参数时,结果为:
yes
2,编写函数实现两个数字做为参数,返回最大值
代码
function a() { # 定义函数num1=$1 # 获取第一个参数
# echo "num1:$num1"num2=$2
# echo "num2:$num2"if [ $num1 -gt $num2 ] # 2个参数进行比较thenecho "$num1" # 返回第一个参数elseecho "$num2" # 返回得第二个参数fi
}
c=$(a 200 300) # 传入2个参数,并且将返回值赋值给c
echo "the $c is more big"
运行输出结果:
[root@localhost ~]# bash functiontest.sh
the num1:200
num2:300
300 is more big
3,编写函数,实现两个整数位参数,计算加减乘除
代码
a(){one=$1two=$2echo "$one + $two = `expr $one + $two`"echo "$one - $two = `expr $one - $two`"echo "$one * $two = `expr $one \* $two`"echo "$one / $two = `expr $one / $two`"printf "$one / $two = `expr $one / $two`\n"}
a 2 3
运行结果
[root@localhost ~]# bash functiontest.sh
2 + 3 = 5
2 - 3 = -1
2 * 3 = 6
2 / 3 = 0
2 / 3 = 0
4、将/etc/shadow文件的每一行作为元数赋值给数组
代码
function a(){a=`wc -l /etc/shadow | cut -d" " -f1` # 将目标文件进行剪切,提取需要的数据,这里代表数据个数
for i in `seq $a`
dob=`expr $i - 1` # 数组下标arr[$b]=`awk 'NR=='$i'{print}' /etc/shadow` # 将对应的哪一行数据放入到数组
done
}
a
echo ${arr[0]} # 打印数组的第一个元素
echo ${arr[1]} #第二个
echo ${arr[2]}
echo ${arr[3]}
以上的结果显示为: 结果的验证可以用cat 命令对目标文件进行对比
[root@localhost ~]# bash functiontest.sh
root:$6$SqQF33Q5poRxzqNJ$mAZ7EJuymCGVS6HxSAinq4danhF48kUbkyg/Kck3VJ8mIO5tDJlrsbQ04.aXbUb63rif82rIR/Xuatvcdj6Bp1::0:99999:7:::
bin:*:19121:0:99999:7:::
daemon:*:19121:0:99999:7:::
adm:*:19121:0:99999:7:::
5,使用关联数组统计文件/etc/passwd中各个用户的shell类型
代码
function a(){read -p "which user's shell type that you want find?:" shell_type # 提示加读取输入的变量declare -A arry # 必须声明关联数组l=`wc -l /etc/passwd | cut -d " " -f1` # 计算数据的条数for i in `seq $l`do
# ass-arry[`expr $i - 0`] index=`cat /etc/passwd | awk 'BEGIN{FS=":"}{print $1}' | awk 'NR=='$i'{print}'` # 关联数组的下标# echo "index $index"declare -A arryarry["$index"]=`cat /etc/passwd | awk 'BEGIN{FS=":"}{print $7}' | awk 'NR=='$i'{print}'` # 关联数组的值doneecho "the user $shell_type's shell type is ${arry[$shell_type]}" # 格式化输出
}
a
运行的结果:
[root@localhost ~]# bash functiontest.sh
which user's shell type that you want find?:fu
the user fu's shell type is /bin/bash[root@localhost ~]# bash functiontest.sh
which user's shell type that you want find?:root
the user root's shell type is /bin/bash[root@localhost ~]# bash functiontest.sh
which user's shell type that you want find?:bin
the user bin's shell type is /sbin/nologin
6,使用关联数组按扩展名统计指定目录中文件的数量
代码
function a() {read -p "input a file path (absolute):(such as input /etc/)>" path # 输入路径read -p "which type of file are you count ?:(such as input txt or sh ...)>" type1 # 输入文件类型a=`ls -l $path | awk '{print $9}' | grep '^[^$]' | awk 'BEGIN{FS="."}{print $2}'` # 看有几个文件有后缀名declare -A arrfor i in $ado# echo "file type: $i"arr["$i"]=`expr ${arr["$i"]} + 1` # 对文件类型计数表示该类型文件个数doneecho "the file of type $type1 have ${arr[$type1]}"
}
a
运行结果如下:结果的验证可以用自己数
[root@localhost ~]# bash functiontest.sh
input a file path (absolute):(such as input /etc/)>/etc/
which type of file are you count ?:(such as input txt or sh ...)>conf
the file of type conf have 36[root@localhost ~]# bash functiontest.sh
input a file path (absolute):(such as input /etc/)>/etc/
which type of file are you count ?:(such as input txt or sh ...)>d
the file of type d have 24
7,编写函数 ,判断是否有参数,存在为Ok,不存在为FAILED,要求绿色OK和红色FAILED
代码:
function a() {b=$#
## echo $bif [ $b -eq 0 ]thenecho -e "\e[31m failde \e[0m";elseecho -e "\e[32m ok \e[0m";fi
}
a 1相关文章:
shell的灵活运用 (函数,关联数组,循环,awk,sed等)
题目 提示:没有基础请先看看基础部分的讲解,否则看不懂 1,编写函数,实现判断是否无位置参数,如无参数,提示错误 代码: #bash/bin function a() {b$# #判断传入的参数个数 # echo $b…...
大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>
大疆无人机飞控开发 大疆无人机SDK开发包功能概述飞行控制相机实时视频流传感器数据下载媒体文件遥控器,电池和无线链路连接应用程序和产品 v4版sdk 二次开发注册成为DJI开发者生成 App KeyAndroid 示例代码配置Android Studio项目集成创建一个新的应用配置Gradle 脚…...
mysql数据库之事务
1.事务的概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个 整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元…...
安装运行Hyperf
安装运行Hyperf 上回讲到,我们对一个普通的 Laravel 框架进行了改造,让它可以在 Swoole 环境下使用,不过其中会有很多问题可能我们一时考虑不到,就会造成程序的稳定性出现问题。那么,今天我们就来学习一个原生的 Swoo…...
回收站文件恢复,分享4个巧妙解决方法!
案例:回收站文件怎么恢复 【清理电脑时一不小心清空了我的回收站,有朋友知道该怎么恢复吗?急急急!】 回收站对于电脑用户来说,可以带来很多的方便,能让用户能够在删除文件后将其恢复。但是,有…...
CTF权威指南 笔记 -第三章汇编基础-3.2-x86/x64汇编基础
这节介绍PC最常见的架构 x86和扩展 x64框架 CPU操作模式 对x86处理器而言 有三个最主要的保护模式 保护模式 实地址模式 系统管理模式还有一个保护模式的子模式 虚拟8086模式 保护模式 保护模式是处理原生状态 这个时候所有指令和特性都是可以使用的 分配给程序的独立内…...
争夺汽车芯片「高地」
一直以来,汽车芯片无论是工艺制程,还是新技术的导入,都要落后消费类产品几年时间。不过,如今,随着汽车智能化进一步推动汽车制造商与上游芯片设计公司、晶圆代工厂的紧密互动,历史即将翻篇。 同时…...
SuperMap GIS基础产品三维GIS FAQ集锦(2)
SuperMap GIS基础产品三维GIS FAQ集锦(2) 【WebGL】桌面对三维缓存设置了最大最小可见高度,在iServer发布三维服务并进行预览是可以看到该效果的,但在前端代码打开该服务,最大最小可见高度效果丢失,请问怎…...
11.streamFile
1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…...
如何裁剪图片大小尺寸?
如何裁剪图片大小尺寸?平时我们在工作或者学习的时候,会经常需要将图片上传到不同的网站或者平台上,然而上传的时候经常会受到尺寸的限制,有时候尺寸太大就需要变小,为了确保上传成功,我们需要将图片进行裁…...
深度学习笔记之梯度下降、反向传播与内置优化器
文章目录 1. 梯度下降法2. 反向传播算法3. PyTorch内置的优化器3.1 SGD优化器3.2 RMSprop优化器3.3 Adam优化器 1. 梯度下降法 笔者往期的机器学习笔记: 机器学习之梯度下降算法 梯度下降法是一种致力于找到函数极值点的算法。 所谓“训练”或“学习”就是改进…...
Visual Studio 2022 搭建GLFW OpenGL开发环境
最近工作需要 需要写一个全景的视频播放器 网上搜了下大概解决方案是 ffmpegopengl b站有很多视频 按照视频 搭建了OpenGL的开发环境 先去GLFW的网站下载 windows平台的库文件 为什么使用GLFW 因为GLFW是跨平台的 我下的是64位版本解压后有目录如下 包含了动态库和静态…...
四元数快速入门【Quaternion】
四元数(Quaternion)是用于旋转和拉伸向量的数学运算符。 本文提供了一个概述,以帮助理解在空间导航等应用程序中对四元数的需求。 推荐:用 NSDT场景设计器 快速搭建3D场景。 可以通过多种方式在空间中准确定位、移动和旋转物体。 …...
为什么我们要使用向量化运算
问题背景 如果你是matlab用户,你一般都会使用向量化运算进行编程。原因也许很简单,因为matlab针对向量化运算在底层做了深度优化,尤其是针对矩阵乘法调用了MKL之类的高度优化的第三库来加速。所以我们在推演算法的阶段,尽量的以向…...
Makefile零基础教学(一)初识makefile
从这篇文章开始就开始进入 Makefile 的零基础教程,相信只要看了本教程的都可以对 Makefile 有一个清晰的理解和正确的运用。那么现在就开始我们的 Makefile 学习之路。 文章目录 一、什么是 Makefile,优点?二、什么是 make, 为什么使用make?…...
如何使用SpringMVC之常用注解
❣️关注专栏:JavaEE Spring MVC ⌛️ 1. Spring MVC 创建和连接⌛️ 1.1 RequestMapping⌛️ 1.2 GetMapping⌛️ 1.3 PostMapping ⌛️ 2. 获取参数⌛️ 2.1 传递/获取单个参数⌛️ 2.2 传递/获取多个参数⌛️ 2.3 传递/获取对象⌛️ 2.4 参数重命名⌛️ 2.4.1 …...
Vue3的axios请求封装,请求拦截,相应拦截
对于三者放在Service.js中封装,方便使用 axios.create 的作用是创建一个新的 axios 实例,该实例可以具有自定义配置。通过使用 axios.create,您可以为任何 API 生成一个客户端,并在使用同一客户端的任何调用中重复使用相同的配置…...
ZC706P试验PL_DDR3内存条的步骤方法
ZC706P 板卡完全兼容XILINX官方的ZC706,当然也支持PL外挂的1G的DDR3内存条,这个片BLOG我提供从官方下载的一个文档和一个项目,演示一下验证DDR3的步骤。 步骤1:准备好板子,安装好软件。 链接:https://pan.baidu.com/s…...
通达信W底形态选股公式,也称双底形态
W底形态,也称双底形态,是一种经典的技术分析形态,代表了跌势的逆转。看起来像字母 "W",描述了一波下跌,反弹,再次下跌到与上一波下跌相同或相近的位置,最后是另一波反弹。W底形态两次…...
java语言与算法、数据结构的用法
Java语言是一种广泛使用的计算机编程语言,也是开发各种软件和操作系统的重要工具之一。除了具有高效性和可移植性之外,Java语言还具有丰富的算法和数据结构支持,可以帮助程序员轻松地解决各种问题。 算法和数据结构是计算机科学中的两个基本…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
