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语言还具有丰富的算法和数据结构支持,可以帮助程序员轻松地解决各种问题。 算法和数据结构是计算机科学中的两个基本…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...