shell-函数与数组

news2024/12/26 19:00:28

1.编写函数,实现打印绿色OK和红色FAILED

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

[root@cotenos day06]# vim colour.sh
 

#!/bin/bash
test(){
    if [ -z $1 ];then
            echo -e "\033[31m FAILED \033[0m"
    else
             echo -e "\033[32m OK \033[0m"
    fi
}

test

执行结果:

[root@cotenos day06]# bash colour.sh

 

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

[root@cotenos day06]# vim hanshu.sh

#!/bin/bash
test(){
    if [ $# -ne 0 ];then
            echo "parameters exists"
    else
            echo" error "
    fi
}

read -p " please input parameter: " i
test302 $i

执行:

[root@cotenos day06]# bash hanshu.sh 

 

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

[root@cotenos day06]# vim test3.sh
 

#!/bin/bash
read -p "请输入两个数:" num1 num2
test3(){
    if [ $num1 -gt $num2 ];then
            echo "max is $num1"
    elif [ $num1 -lt $num2 ];then
             echo " max is $num2 "
    else
            echo " The number are equa"
    fi
}

test3 $num1 $num2

运行:

[root@cotenos day06]# bash test3.sh 

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

[root@cotenos day06]# vim test4.sh

#!/bin/bash
read -p "please input two number:" num1 num2
test304 (){
        expr $num1+$mun2 >&/dev/null
        if [ $# -ne 0 ];
        then
                echo "$num1+$num2=$[$num1+$num2]"
                echo "$num1-$num2=$[$num1-$num2]"
                echo "$num1*$num2=$[$num1*$num2]"
                echo "$num1/$num2=$[$num1/$num2]"
                
        else    
                echo "is not an integer, please re-enter"
        fi      
}       
test304 $num1 $num2

 [root@cotenos day06]# bash test4.sh 
please input two number:12 45
12+45=57
12-45=-33
12*45=540
12/45=0
[root@cotenos day06]# 

 

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

[root@cotenos day06]# vim test5.sh

#!/bin/bash
num=`wc -l </etc/shadow`
for i in `seq $num`
do      
         array[$i]=`head $i /etc/shadow | tail -l`
done     
for i in ${array[*]}
do
        echo $i
done    

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

[root@cotenos day06]# vim test6.sh

#!/bin/bash
declare -A array
for i in `cut -d: -f 7 /etc/passwd`
do      
        let array[$i]++
done    
for i in ${!array[*]}
do
         echo " $i: ${array[$i]} "
done     
~             

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

[root@cotenos day06]# vim test7.sh


#!/bin/bash
read -p "pleace input filename:" filename
declare -A array
for i in `ls $filename | fgrep '.' | cut -d . -f 2`
do      
        let array[$i]++
done    
for i in ${!array[*]}
do
        echo "$i: ${array[$i]}"
done    

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

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

相关文章

git tutorial

最近老板要搞retreat 需要做一个分享&#xff0c;正好把分享的内容作为博客记录一下。 说起git&#xff0c;那就不得不提GitHub。 GitHub 最开始是作为一个面向开源以及私有项目的管理平台。它可以存储代码&#xff0c;文档&#xff0c;数据等等。目前最常用将其作为一个代码…

中点分割裁剪算法介绍 (简单易懂)

目录 一、算法介绍 二、算法描述 一、算法介绍 裁剪效果图&#xff1a; 中点分割裁剪算法的思想类似于二分思想&#xff0c;不断地在中点处将线段一分为二&#xff0c;对每段线段重复Cohen-Sutherland裁剪算法的线段可见性测试方法&#xff0c;直至找到每段线段与窗口边界线的…

STM32MP157驱动开发——Linux块设备驱动

STM32MP157驱动开发——Linux块设备驱动一、简介二、驱动开发1.使用请求队列的方式2.测试①3.不使用请求队列的方式4.测试②参考文章&#xff1a;【正点原子】I.MX6U嵌入式Linux驱动开发——Linux 块设备驱动 一、简介 之前学习的都是关于字符设备的驱动&#xff0c;包括 plat…

Node.js下载安装与基础操作

&#x1f973;博 主&#xff1a;初映CY的前说 &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;Node.js的下载安装操作 node.js下载安装 node.js中文网下载链接http://nodejs.cn/download/ 1.浏…

模型性能分析:ROC 分析和 AUC

本文[1]将介绍模型性能分析的两个方法&#xff1a;ROC & AUC。 ROC 分析和曲线下面积 (AUC) 是数据科学中广泛使用的工具&#xff0c;借鉴了信号处理&#xff0c;用于评估不同参数化下模型的质量&#xff0c;或比较两个或多个模型的性能。 传统的性能指标&#xff0c;如准确…

什么是进程、线程,什么是并发、并行及线程的创建和线程的基本使用

一、什么是程序、进程、线程 1、什么是程序 程序可以理解为是我们执行的一段代码&#xff0c;是一种静态的概念 2、什么是进程 进程是指运行中的程序&#xff0c;是一个动态的概念。进程有它自身的产生、存在和消亡的过程&#xff08;进程产生就会占用内存空间&#xff0c;反…

【WSL】[04]从C盘解放出来WSL的linux镜像

前言&#xff1a; C盘的硬盘资源有限&#xff0c;虚拟机的需求无限&#xff0c;所以&#xff0c;要把无限的硬盘需求搞到其他盘去才行啊 方案1&#xff1a;利用工具&#xff1a;move-wsl 1 管理员运行PowerShell,创建WSL的工作目录 移动前&#xff0c;C盘的空间大小&#xf…

vue-element-表格 Excel 【导出】功能

表格Excel导出功能 1. 将点击导出按钮添加点击事件click“handleDownload” 并在method中创建方法 <el-button type"danger" size"small" click"handleDownload">excel导出</el-button>复制下面的方法 or 去vue-element-admin中的s…

分享62个PHP源码,总有一款适合您

链接&#xff1a;https://pan.baidu.com/s/17mzEPqFhZp0UEvznSviiEA?pwdnjin 提取码&#xff1a;njin PHP源码 分享62个PHP源码&#xff0c;总有一款适合您 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&#xff0c;大家下载后…

【C语言简明教程】探究整型数据在内存中的存储

概述 我们知道一个变量的创建是要在内存中开辟空间的。空间的大小是根据不同的类型而决定的。那么整型数据在所开辟内存中到底是如何存储的&#xff1f; 目录 概述 原码、反码、补码 什么是原码、反码和补码&#xff1f; 为什么使用补码存储&#xff1f; 大小端存储 - 数据…

Hadoop高手之路6-ZooKeeper

文章目录Hadoop高手之路6-Zookeeper分布式协调服务一、Zookeeper简介二、Zookeeper的特性1. 一致性C2. 可靠性3. 顺序性4. 原子性A5. 实时性三、Zookeeper分布式集群的部署1. 下载安装包2. 上传3. 解压4. 配置环境变量5. 配置Zookeeper1) 复制一个配置模板文件2) 修改配置文件3…

C语言排序算法

冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。 过程演示&#xff1a; #i…

shell第二天练习

题目 1、编写一个 Shell脚本&#xff0c;程序执行时从键盘读入一个目录名&#xff0c;如果用户输入的目录不存在&#xff0c;则提示file does not exist&#xff1b;如果用户输入的不是目录则提示用户必须输入目录名&#xff1b;如果用户输入的是目录则显示这个目录下所有文件…

django笔记《模型和数据库一》

文章目录1 前言2 创建一个demo项目2.1 修改配置文件3 模型3.1 主键3.2 django 内置字段类型3.3 自定义字段类型3.4 django字段选项3.5 字段备注名3.5 META3.6 关联关系3.6.1 多对一关系3.6.2 多对多关系3.6.3 一对一关系3.7 字段命名限制3.8 模型属性&#xff1a;Model.objects…

基于springboot+Vue前后端分离的招聘管理系统(程序+数据库+文档)

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

A Survey on Deep Learning Techniques for Stereo-based Depth Estimation论文阅读

1. 摘要 估计RGB图片的深度是一个长期存在的病态问题&#xff0c;计算机视觉、图形学、机器学习社区已经探索了数十年。立体匹配是最广泛见诸文献的技术之一&#xff0c;因为它与人类的双目系统有强关联。传统上&#xff0c;利用多张图片的人工特征匹配来处理基于立体的深度估…

nginx 实现图片防盗链功能

在搜索浏览网页的时候&#xff0c;发现一篇文章是从我的个人网站转载的&#xff0c;但是没有注明出处&#xff0c;文章中的图片也没有本地化处理&#xff0c;还是从我的服务器请求&#xff0c;这就无形中增加了我的服务器的开销&#xff0c;于是有了设置防盗链功能这一想法。 …

Kafka 核心源码解读【五】--延迟操作模块

文章目录1 TimingWheel&#xff1a;探究Kafka定时器背后的高效时间轮算法1.1 时间轮简介1.2 源码层级关系1.3 时间轮各个类源码定义1.3.1 TimerTask 类1.3.2 TimerTaskEntry 类1.3.3 TimerTaskList 类1.3.4 TimingWheel 类1.4 总结2 DelayedOperation&#xff1a;Broker是怎么延…

【Vue】九、vue-element-admin

后端程序员的vue学习之路一、介绍二、功能特性三、前置准备四、前置知识五、项目结构说明&#xff1a;六、安装运行一、介绍 vue-element-admin 是一个后台前端解决方案&#xff0c;它基于 vue 和 element-ui实现&#xff0c;它使用了最新的前端技术栈&#xff0c;内置了动态路…

深入理解计算机系统_程序的链接过程

编辑好的程序&#xff0c;依次经过预处理(注释&#xff0c;宏替换&#xff0c;头文件包含&#xff0c;生成.s文件)、编译(生成汇编文件.s )、汇编(生成静态可重定位目标文件&#xff0c;文件名是.o)、链接后最终得到可执行目标文件&#xff0c;这个笔记记录一下&#xff0c;链接…