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

news/2024/11/17 6:47:19/

题目

一、编写函数,实现打印绿色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 ];thenecho -e "\e[31mFAILED\e[0m"elseecho -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 ];thenecho "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 ];thenecho "must have only 2 parameters"elif ! expr $1 + $2 &> /dev/null;thenecho "the 2 parameters must be integer"elseif [ $1 -gt $2 ];thenecho $1elseecho $2fifi
}
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 ];thenecho "must have only 2 parameters"elif ! expr $1 + $2 &> /dev/null;thenecho "the 2 parameters must be integer"elseecho "$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`
dolet array[$line]+=1
done
for index in ${!array[*]}
doecho $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" ];thenecho "your input is not a directory"
elsefor i in `ls $dir`dolet array[${i#*.}]+=1done
fi
for index in ${!array[*]}
doecho "$index:${array[$index]}"
done

2、加可执行权限

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

3、测试

over~


http://www.ppmy.cn/news/8438.html

相关文章

windows11 wsl kali子系统 adb调试

环境准备 在Windows中 安装usbipd 参考资料:https://learn.microsoft.com/zh-cn/windows/wsl/connect-usb 方法一: 在powershell中执行winget install --interactive --exact dorssel.usbipd-win 方法二:去https://github.com/dorssel/usbi…

从umati 看德国人如何玩OPCUA的

到目前为止,机器的联网标准缺乏统一的协议和语义标准。比较知名的要数每个的MTConnect。fanuc机床的focas协议。未来的发展方向是OPCUA协议。但是实现这个目标并非一日之功。德国的umati 社区也许给我们一些启发。 为了推进机床行业的数字化进程,VDW&…

Good Bye 2022: 2023 is NEAR

A.B略 C.鸽巢原理中国剩余定理 首先,显然所有数必须两两相同,不然加上任何整数必定会产生gcd > 2的组合 然后我们手玩可以发现奇偶性,我们至少不能使得有两个数同时是偶数,如果出现两个偶数,两个奇数,例如2 4 5 7,那么无论x选择什么,都至少会出现两个偶数,进一步地,我们发…

Linux多进程编程之exec函数族使用

Linux多进程编程之exec函数族使用1.exec函数族是什么2.execl函数具体使用3.execlp4.exec后面不同字母所代表的含义1.exec函数族是什么 顾名思义,它并不只是一个函数,而是以exec开头的六个函数,并且是没有exec这个函数的(就像TCP/…

C++中STL的vector扩容机制

目录前言发生扩容扩容机制size()和capacity()reserve()和resize()前言 前阵子面试的时候,被问到往vector中插入一个数据可能会发生什么? 我答:可能会扩容; 为啥vector支持变长? 我答:它实在堆上动态申请内存,因此有自己的一套扩容…

保护性暂停设计模式

目录 保护性暂停设计模式 获取结果 产生结果 总代码实现 测试 增加超时效果的Guarded suspension get(long timeout) 测试 保护性暂停设计模式 Guarded Suspension 即 保护性暂停; 是一种等待唤醒机制的一种规范 ,也可以理解为使用中设计模式,Java的API很多都按照保护性…

android中service实现原理分析

前言: 一开始的目标是解决各种各样的ANR问题的,我们知道,ANR总体上分有四种类型,这四种类型有三种是和四大组件相对应的,所以,如果想了解ANR发生的根因,对安卓四大组件的实现流程是必须要了解的…

第一个完整的CMake工程

第一个完整的CMake工程一、概述二、准备工作2.1 创建工程2.2 创建源码目录三、换个地方保存目标二进制文件3.1 add_subdirectory 指令说明3.2 重设目标二进制生成目录四、如何安装4.1 目标文件的安装4.2 普通文件的安装4.3 非目标文件的可执行程序安装(比如脚本之类)&#xff1…