shell第五天作业——函数与数组

news2024/12/27 3:59:38

题目

一、编写函数,实现打印绿色OK和红色FAILED

二、编写函数,实现判断是否有位置参数,如无参数,提示错误

三、编写函数实现两个数字做为参数,返回最大值

四、编写函数,实现两个整数为参数,计算加减乘除。

五、将/etc/shadow文件的每一行作为元数赋值给数组

六、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

七、使用关联数组按扩展名统计指定目录中文件的数量


一、编写函数,实现打印绿色OK和红色FAILED

判断是否有参数,存在为Ok,不存在为FAILED

1、编写脚本

[root@client_2 homework5]# vim echo_color.sh 
#!/bin/bash
echo_color() {
  if [ $# -eq 0 ];then
	echo -e "\e[31mFAILED\e[0m"
  else
	echo -e "\e[32mOK\e[0m"
  fi
}
echo_color $@

2、加可执行权限

[root@client_2 homework5]# chmod a+rx echo_color.sh

3、测试

二、编写函数,实现判断是否有位置参数,如无参数,提示错误

1、编写脚本

[root@client_2 homework5]# vim if_no_param.sh 
#!/bin/bash
if_no_param() {
  if [ $# -eq 0 ];then
	echo "error:There are no parameters"
  fi
}
if_no_param $@

2、加可执行权限

[root@client_2 homework5]# chmod a+rx if_no_param.sh

3、测试

 

三、编写函数实现两个数字做为参数,返回最大值

1、编写脚本

[root@client_2 homework5]# vim max_num.sh 
#!/bin/bash
max_num() {
  if [ $# -ne 2 ];then
	echo "must have only 2 parameters"
  elif ! expr $1 + $2 &> /dev/null;then
	echo "the 2 parameters must be integer"
  else
	if [ $1 -gt $2 ];then
		echo $1
	else
		echo $2
	fi
  fi
}
max_num $@

2、加可执行权限

[root@client_2 homework5]# chmod a+rx max_num.sh

3、测试

 

四、编写函数,实现两个整数为参数,计算加减乘除。

1、编写脚本

[root@client_2 homework5]# vim calculation.sh 
#!/bin/bash
calculation() {
  if [ $# -ne 2 ];then
	echo "must have only 2 parameters"
  elif ! expr $1 + $2 &> /dev/null;then
	echo "the 2 parameters must be integer"
  else
	echo "$1+$2=$[$1+$2]"
	echo "$1-$2=$[$1-$2]"
	echo "$1*$2=$[$1*$2]"
	echo "$1/$2=$[$1/$2]"
  fi
}
calculation $@

2、加可执行权限

[root@client_2 homework5]# chmod a+rx calculation.sh

3、测试

 

五、将/etc/shadow文件的每一行作为元数赋值给数组

1、编写脚本

[root@client_2 homework5]# vim array_shadow.sh 
#!/bin/bash
array=(`cat /etc/shadow`)
echo ${#array[@]}

2、加可执行权限

[root@client_2 homework5]# chmod a+rx array_shadow.sh

3、测试

 

六、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

1、编写脚本

[root@client_2 homework5]# vim shell_count.sh 
#!/bin/bash
declare -A array
for line in `cut -d: -f7 /etc/passwd`
do
	let array[$line]+=1
done
for index in ${!array[*]}
do
	echo $index:${array[$index]}
done

2、加可执行权限

[root@client_2 homework5]# chmod a+rx shell_count.sh 

3、测试

 

七、使用关联数组按扩展名统计指定目录中文件的数量

1、编写脚本

[root@client_2 homework5]# vim file_count.sh 
#!/bin/bash
declare -A array
read -p "please input a directory path:" dir
if ! [ -d "$dir" ];then
	echo "your input is not a directory"
else
	for i in `ls $dir`
	do
		let array[${i#*.}]+=1
	done
fi
for index in ${!array[*]}
do
	echo "$index:${array[$index]}"
done

2、加可执行权限

[root@client_2 homework5]# chmod a+rx file_count.sh

3、测试

over~

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

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

相关文章

状态压缩DP——最短Hamilton路径

状态压缩DP——最短Hamilton路径一、题目描述二、思路分析1、状态转移方程(1)状态表示——状态压缩(2)状态转移2、循环和初始化(1)循环设计(2)初始化三、代码实现一、题目描述 二、思…

(day1)自学java基础

非原创,记录学习过程,为方便自己后期复习 目录 1.Java基础概念 2.运算符 3.判断 4.循环 5.循环高级 6.数组 7.数组的内存图 8.方法 ctrlaltL 自动格式化代码 为什么要配置环境变量? 我们想在任意目录都可以打开指定软件,就…

DDR3 数据传输(四)

目录 引言 AXI从侧接口参数 AXI从侧接口信号 参考说明 引言 前文链接&#x

巧用网络指数

哈喽,好久不见!今天我们来一起聊聊网络指数。网络指数平台是以网民在线使用行为数据为基础,借助关键词表达的重要信息检索渠道,一定程度上可以反映某一话题的关注度,也可以帮助我们抓住所谓的“热点”。这里&#xff0…

源码编译mindspore,利用云服务器与wsl

文章目录tmux的使用利用WSL2设置交换空间通过编译产生的output安装tmux的使用 参考:https://blog.csdn.net/weixin_43922901/article/details/89230499 参考:http://www.ruanyifeng.com/blog/2019/10/tmux.html tmux用于远程编译,开启一个会…

2023第一天,给你们展示一下用Python实现自动答题

前言 python实现自动答题? 别管,我这就给你们展示一下 (效果图看不了 不知道为什么说我违gui)😥 话不多说,咱就直接看代码吧 代码 准备模块 import requests import parsel from selenium import webd…

create-vite 源码解析它来喽

create-vite的源码很简单,只有一个文件,代码总行数400左右,但是实际需要阅读的代码大约只有200行左右,废话不多说,直接开始吧。 代码结构 create-vite的代码结构非常简单,直接将index.ts拉到最底下&#…

项目学习--谷粒商城

1. 微服务搭建 本地安装虚拟机,静态IP划分和docker的使用微服务功能模块介绍以及业务模块划分与抽取 2. 前端搭建 3. 后端业务代码完善 云储存OSS的整合与使用JSR303校验以及自定义分组校验 4. Elasticsearch学习 Elasticsearch的基础使用Elasticsearch字段ma…

volatile 详解

1. 前言 在并发编程的过程中,volatile属性非常重要。首先我们要了解并发编程的三大特性:可见性, 有序性, 原子性而我们今天的了解的volatile 就牵扯到可见性, 有序性。同时我也会从个人了解的角度给大家分析下,如果有什么不对的地方也希望大家…

物联网与射频识别技术,课程实验(一)

目录 (1)communication.py (2)Reader.py (3)Tag.py 实验1—— EPC C1G2标准下的标签状态转换仿真 实验说明: 利用Python或Matlab模拟C1G2标签的状态转换模型; 程序应能显示标签…

深度学习:01 神经网络与激活函数

目前,最广泛使用的定义是Kohonen于1988年的描述: 神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。 目录 对神经网络的概述 神经网络的表示 激活函数 为什么激…

2022年总结:从初二学生到算法作者的蜕变之路

目录 一年的创作历程 我和 CSDN 在编程竞赛的合作 About CBC 技术社区的发展 夜跑奇遇 About 博客之星 新年致谢 元旦祝福 一年的创作历程 2022年,这一年对于我来说是十分重要的一年。在这一年里,我作为一名初二在校学生,在CSDN上发布…

【Linux 环境变量】环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数

1.问题:为什么自己写的程序需要加上./才能执行,但是指令可以直接使用,例:ls -al? 因为:不加"./"执行程序的时候会按环境变量PATH里面的各个路径找到就正常执行,找不到就报错&#xff…

SQL笔试题总结

文章目录前言一、列转行题目:将表Student转化为下面的形式展示先放答案逐步剖析二、row_number() over() 的使用题目:统计订单交易表(orders)每个商品交易金额最高的那一条数据先放答案逐步剖析三、逐行累加题目:还是订…

✿✿✿JavaScript --- jQuery框架二

目 录 1.高级事件 (1)浏览器一打开自动触发我们绑定的事件 (2) Trigger 传递数据 (3)自定义事件 (4)trigger 简写方案 (5)triggerHandler() (6)trigger和triggerHandler的区别 (7)on off one 2.动画 (1)显示 隐藏 动画 (2)队列动画 (3)下滑 上卷 (4)淡入淡出…

Nacos启动出现Error creating bean with name ‘memoryMonitor‘ 、‘externalDumpService‘

目录 🧡问题 🧡解决方法 💟这里是CS大白话专场,让枯燥的学习变得有趣! 💟没有对象不要怕,我们new一个出来,每天对ta说不尽情话! 💟好记性不如烂键盘&#x…

WSL2支持systemctl命令

文章目录背景相关知识systemdinit安装方法一:微软官方支持方法(推荐)方法二:安装daemonize实现参考背景 微软官方推出Windows Terminal第一时间,我就安装了这个终端软件。现在GitHub已经有86.8k星,且发布了…

一名普通Java程序员的2022的总结和2023的展望

前言今天是元旦节,也是2023年的第一天,首先祝各位亲朋好友们元旦快乐,在新的一年全家身体康健,诸事顺遂,阖家幸福,最重要的是身体健康,工作顺利,永无BUG永不加班!&#x…

计算机组成原理【1】初识硬件

目录 考点1:硬件发展———————————————————————————— 一.计算机硬件的基本组成 1.早期冯诺依曼机 (1)冯.诺依曼计算机的特点: 2.现代计算机的结构 3.总结图 二.各个硬件的工作原理 1.寄存器MAR,MDR 2.主存…

EMNLP22 外部知识注入:Prompt-Learning for Short Text Classification

Prompt-Learning for Short Text Classification 任务形式:短文本分类问题,但是短文本的短长度、特征稀疏性和高模糊性给分类任务带来了巨大挑战。 1以往的工作,在注入外部信息上 大多数提示学习方法手动扩展标签词或仅考虑类别名称以纳入…