shell第五天练习

news2024/11/27 8:40:55

题目:

1、编写函数,实现打印绿色OK和红色FAILED,判断是否有参数,存在为Ok,不存在为FAILED
2、编写函数,实现判断是否无位置参数,如无参数,提示错误
3、编写函数实现两个数字做为参数,返回最大值
4、编写函数,实现两个整数位参数,计算加减乘除。
5、将/etc/shadow文件的每一行作为元素赋值给数组
6、使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量
7、使用关联数组按扩展名统计指定目录中文件的数量

1、编写函数,实现打印绿色OK和红色FAILED,判断是否有参数,存在为Ok,不存在为FAILED

1、编写脚本

[root@localhost day5]# 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@localhost day5]# chmod a+rx echo_color.sh

3、运行测试
在这里插入图片描述

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

1、编写脚本

[root@localhost day5]# 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@localhost day5]# chmod a+rx if_no_param.sh

3、运行测试
在这里插入图片描述

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

1、编写脚本

[root@localhost day5]# 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@localhost day5]# chmod a+rx max_num.sh

3、运行测试

[root@localhost day5]# ./max_num.sh 22 33
33
[root@localhost day5]# ./max_num.sh 15 6
15

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

1、编写脚本

[root@localhost day5]# 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@localhost day5]# chmod a+rx calculation.sh

3、运行测试

[root@localhost day5]# ./calculation.sh 3 4
3+4=7
3-4=-1
3*4=12
3/4=0
[root@localhost day5]# ./calculation.sh 15 3
15+3=18
15-3=12
15*3=45
15/3=5

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

1、编写脚本

[root@localhost day5]# vim array_shadow.sh

#!/bin/bash
array=(`cat /etc/shadow`)
echo ${#array[@]}

2、设置权限

[root@localhost day5]# chmod a+rx array_shadow.sh

3、运行测试

[root@localhost day5]# cat /etc/shadow | wc -l
52
[root@localhost day5]# ./array_shadow.sh
52

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

1、编写脚本

[root@localhost day5]# 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@localhost day5]# chmod a+rx shell_count.sh

3、运行测试

[root@localhost day5]# ./shell_count.sh 
/sbin/nologin:43
/bin/bash:6
/sbin/halt:1
/bin/sync:1
/sbin/shutdown:1

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

1、编写脚本

[root@localhost day5]# 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@localhost day5]# chmod a+rx file_count.sh

3、运行测试
在这里插入图片描述

[root@localhost day5]# ./file_count.sh
please input a directory path:/root/shell/day5
jpg:2
txt:3
zip:2
sh:7

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

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

相关文章

聊聊前端安全之CSRF

本文作者为奇舞团前端开发工程师一、什么是CSRFCSRF(Cross Site Request Forgery,跨站域请求伪造),通常缩写为 CSRF。CSRF攻击是攻击者通过伪装成受信任用户向服务器发起各种请求,达到欺骗服务器接收并执行指令&#x…

【数据结构】顺序表

【本篇内容】线性表顺序表线性表线性表是n个具有相同特性的数据元素的有限序列。常见的线性表:顺序表、链表、栈、队列、字符串......线性表在逻辑上是线性结构,但是在物理结构上并一定是连续的,线性表在物理上存储时,通常是以数组…

保证原子性的几种方式,你都知道吗???

1. 前言 今天主要是从实战 浅谈原理的角度来说下,并发线程下原子性的几种处理方式,好了废话不多说了,接下来让我们看看吧 2. 开始 在开始之前需要提问下大家, 代码i ; 能保持原子性吗??? 是不是一句话就执…

C++——命名空间,输入输出,缺省参数

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;数据结构——二叉树 &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;补充C语言…

Java 诊断利器 Arthas JVM命令

一、jvm 相关命令介绍 命令说明dashboard当前系统的实时数据面板getstatic查看类的静态属性heapdumpdump java heap, 类似 jmap 命令的 heap dump 功能jvm查看当前 JVM 的信息logger查看和修改 loggermbean查看 Mbean 的信息memory查看 JVM 的内存信息ognl执行 ognl 表达式per…

【Android春招】Android基础day2

一、填空题 1&#xff0e;除了开启开发者选项之外&#xff0c;还需打开手机上的 _ 开关&#xff0c;然后才能在手机上调试App。 USB调试 2&#xff0e;App开发的两大技术路线包括 _和混合开发。 原生开发 3&#xff0e;App工程的编译配置文件名为 _。 build.gradle 4&#xff0…

挂载光盘,配置yum源并且安装http软件包 ansible(4)

目录 一、挂载本地光盘到/mnt 二、配置yum源 一、挂载本地光盘到/mnt 第一步&#xff1a; 使用mount模块 注&#xff1a;fstype代表文件格式 二、配置yum源 第一种方法&#xff1a; 使用yum_repository模块 检验是否有对应文件在受控主机node1受控主机&#xff1a;node2受控…

Zipkin数据持久化配置

上一篇我们了解了Zipkin的基础知识以及Zipkin的服务端搭建。 在使用过程中很多同学发现了他的秘密&#xff0c;Zipkin模式将数据保存在内存中&#xff0c;当我们重启后&#xff0c;追踪数据便会丢失。其实&#xff0c;Zipkin也支持将追踪数据保存到MySql或者ES中。 持久化到M…

大数据基础平台搭建-(四)HBbase集群HA+Zookeeper搭建

大数据基础平台搭建-&#xff08;四&#xff09;HBbase集群HAZookeeper搭建 大数据平台系列文章&#xff1a; 1、大数据基础平台搭建-&#xff08;一&#xff09;基础环境准备 2、大数据基础平台搭建-&#xff08;二&#xff09;Hadoop集群搭建 3、大数据基础平台搭建-&#xf…

Linux学习笔记——Nginx安装部署

5.3、Nginx安装部署 5.3.1、简介 Nginx&#xff08;engine x&#xff09;是一个高性能的HTTP和反向代理Web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。 同Tomcat一样&#xff0c;Nginx可以托管用户编写的WEB应用程序成为可访问的网页服务&#xff0c;同时也可以作为…

二十七、Docker (3)

&#x1f33b;&#x1f33b; 目录一、java开发者Docker常用镜像容器创建&#xff08;本地&#xff09;1.1 资源上传1.2 还原部署1.2.1 部署jdk1.2.2 部署tomcat1.2.3 部署nginx1.2.4 部署mysql二、java开发者Docker常用镜像容器创建(官网拉取)2.1 jdk部署2.1.1 拉取jdk镜像2.1.…

verilog学习笔记- 7)verilog程序框架

目录 注释&#xff1a; 关键字&#xff1a; Verilog常用的关键字&#xff1a; 程序框架&#xff1a; 注释&#xff1a; Verilog HDL 中有两种注释的方式&#xff0c;一种是以“/*”符号开始&#xff0c;“*/”结束&#xff0c;在两个符号之间的语句都 是注释语句&#xff…

7-10 集合相似度

给定两个整数集合&#xff0c;它们的相似度定义为&#xff1a;Nc​/Nt​100%。其中Nc​是两个集合都有的不相等整数的个数&#xff0c;Nt​是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输出格式&#xff1a; 对每一对需要计算的集合&…

DaVinci:键 - 键混合器

调色页面&#xff1a;键Color&#xff1a;Key当选中一个键混合器节点时&#xff0c;键 Key调板上对应显示键混合器 Key Mixer的相关选项。键混合器节点默认有两个输入链接。可在键混合器节点上右击选择“添加”或“移除”一个输入。所有的输入链接和惟一的输出链接均可在键调板…

Elasticsearch在各大互联网公司大量真实的应用案例

国内现在有大量的公司都在使用 Elasticsearch&#xff0c;包括携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。 除了搜索之外&#xff0c;结合Kibana、Logstash、Beats&#xff0c;Elastic Stack还被广泛运用在大数据近实时分析领域&#xff0c;包括日志分…

SQL如何在数据库中执行

数据库的服务端&#xff0c;可分为执行器(Execution Engine) 和 存储引擎(Storage Engine) 两部分&#xff1a; 执行器负责解析SQL执行查询存储引擎负责保存数据 1 SQL如何在执行器中执行 # 查询用户ID大于50的用户的所有订单 SELECT u.id AS user_id, u.name AS user_name,…

详解回调函数

目录 前言 一、 实现一个简单的计算器 1.1 - 代码一 1.2 - 代码二 二、qsort 函数的介绍 三、改进冒泡排序函数 前言 回调函数就是一个通过函数指针调用的函数。如果把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其…

微信公众号调用扫一扫功能

手把手教你调用微信扫一扫&#xff0c;三分钟包会_前端人的博客-CSDN博客_调用微信扫一扫 第一次搞公众号&#xff0c;还以为跟上回调用企业微信扫一扫一样。。。调起扫一扫功能的过程自然是不同的&#xff0c;要注意的地方还挺多&#xff0c;记录一下 。 其实&#xff0c;在使…

2023最新网络安全自学路线,内容涵盖3-5年技能提升

前言 先预祝大家新年快乐&#xff01; 【一一帮助网络安全入门和提升点这里一一】 01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究…

改进MBR(操作显卡来输出字符)

文章目录前言前置知识mbr.S代码实验操作前言 本博客记录《操作系统真象还原》第二章第一个实验操作~ 实验环境&#xff1a;ubuntu18.04VMware &#xff0c; Bochs下载安装 实验内容&#xff1a;在屏幕上打印字符串【采用的方式是直接修改显存实现】 实验原因&#xff1a;mb…