shell中的函数、shell中的数组、告警系统需求分析
7月16日任务
20.16/20.17 shell中的函数
20.18 shell中的数组
20.19 告警系统需求分析
20.16/20.17 shell中的函数
函数就是一个子shell就是一个代码段,当定义好一个函数后就可以去引用它。
格式:
function f_name() {
command
} 函数必须要放在最前面
示例1:shell有$1 $2 $3 函数也是支持有$1 $2 $3
[root@jimmylinux- shell]# vi fun1.sh #!/bin/bash
function inp(){
echo "The frist par is $1"
echo "The second par is $2"
echo "The third par is $3"
echo "The scritp name is $0"
echo "The number of par is $#"
} inp $ $ $
脚本执行效果
[root@jimmylinux- shell]# sh fun1.sh
The frist par is
The second par is
The third par is
The scritp name is fun1.sh
The number of par is [root@jimmylinux- shell]# sh fun1.sh
The frist par is
The second par is
The third par is
The scritp name is fun1.sh
The number of par is
[root@jimmylinux- shell]#
示例2:定义一个加法函数,shell中定义的函数必须要放在第二行。
[root@jimmylinux- shell]# vi fun2.sh #!/bin/bash
sum() {
s=$[$+$]
echo $s
} sum
脚本执行效果
[root@jimmylinux- shell]# sh fun2.sh [root@jimmylinux- shell]# sh -x fun2.sh
+ sum
+ s=
+ echo
示例3:显示IP地址信息
[root@jimmylinux- shell]# vi fun3.sh #!/bin/bash
ip() {
ifconfig |grep -A1 "$1 " |tail - |awk '{print $2}'|awk -F':' '{print $2}'
}
read -p "Please input the eth name: " e
myip=`ip $e`
echo "$e address is $myip"
20.18 shell中的数组
所谓数组就是一串数字或者一串字符串形成的变量,可以对这个变量进行操作,比如可以取数组的其中某一个值进行分片处理。
数组格式 a=(1 2 3 4 5); echo ${a[@]}
[root@jimmylinux- ~]# a=( )
[root@jimmylinux- ~]# echo ${a[@]}
查看其中某一个元素的值,有一个特殊性,方括号里面的数字表示它的下标,例如第1个就是第2个位置,计算机里面数组是从0开始的。
[root@jimmylinux- ~]# echo ${a[]}
[root@jimmylinux- ~]# echo ${a[]}
[root@jimmylinux- ~]# echo ${a[]}
获取数组的元素个数
[root@jimmylinux- ~]# echo ${#a[@]} #号表示一个个数
数组赋值
[root@jimmylinux- ~]# a[]=b
[root@jimmylinux- ~]# echo ${a[*]}
b
[root@jimmylinux- ~]# a[]=bbb
[root@jimmylinux- ~]# echo ${a[*]}
bbb
如何删除元素和数组
[root@jimmylinux- ~]# unset a[] 表示删除一个元素
[root@jimmylinux- ~]# echo ${a[*]} [root@jimmylinux- ~]# unset a 表示删除整个数组
[root@jimmylinux- ~]# echo ${a[*]} [root@jimmylinux- ~]#
数组的分片
[root@jimmylinux- ~]# a=(`seq `)
[root@jimmylinux- ~]# echo ${a[*]} [root@jimmylinux- ~]# echo ${a[@]::} 从第3个元素开始,截取4个 [root@jimmylinux- ~]# echo ${a[@]:-:} 从倒数第3个元素开始,截取2个
数组的替换,左边是要替换的值,右边是被替换的值。
[root@jimmylinux- ~]# echo ${a[@]//}
[root@jimmylinux- ~]# a=(${a[@]//}) 也可以把a赋值,结果是一样的。
[root@jimmylinux- ~]# echo ${a[@]}
20.19 告警系统需求分析
作为一个shell项目,告警系统是zabbix外的一个定制化需求
需求:使用shell定制各种个性化的告警工具,需要统一化管理、规范化
思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、日志系统等
主程序: 整个脚本的入口,整个系统的命脉
配置文件:控制中心,来开关各个子程序,指定各个相关联的日志文件
子程序: 才是真正的监控脚本,监控各项指标
邮件引擎:由python程序实现,定义发邮件的服务器,发件人,密码等。
日志文件:整个监控系统要有日志输出到日志文件里
要求:被监控的机器角色多种多样,所有机器上部署一样的监控系统,不管什么机器整个监控程序的框架是一致的,不同角色定制不同的配置文件
程序架构:
主目录mon: 包含子目录bin、conf、shares、mail、log
子目录bin: 主程序脚本 main.sh
子目录conf:配置文件 mon.conf
子目录shares:监控子脚本 load.sh .sh
子目录mail:邮件引擎文件 mail.py mail.sh
子目录log: 日志文件 mon.log err.log
shell中的函数、shell中的数组、告警系统需求分析的更多相关文章
- java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...
- shell中的函数 shell中的数组 告警系统需求分析
- javascript 中 split 函数分割字符串成数组
分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6 ...
- 关于numpy中的函数return中加入字符串类型数据后,小数点精度变化
weekdays.pyimport numpy as npfrom datetime import datetimedef datestr2num(s): return datetime.strpti ...
- 关于db2中listagg函数开发中的体验
一.首先解释一下可能会查询的基础问题: 1.1db2 “with ur”是什么意思: 在DB2中,共有四种隔离级:RS,RR,CS,UR.以下对四种隔离级进行一些描述,同时附上个人做试验的结果.隔离级 ...
- [Python]Python Class 中的 函数定义中的 self
In [80]: class MyClass001: ....: def selfDemo(self): ....: print 'My Demo' ....: In [81]: p = MyClas ...
- Makefile中的函数
Makefile 中的函数 Makefile 中自带了一些函数, 利用这些函数可以简化 Makefile 的编写. 函数调用语法如下: $(<function> <arguments ...
- Oracle中REGEXP_SUBSTR函数(转)
Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','2 ...
- Oracle中REGEXP_SUBSTR函数(字符串转多行)
Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...
- Oracle中REGEXP_SUBSTR函数
Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...
随机推荐
- Python 加密 shellcode 免杀
Python 加密 shellcode 免杀 环境准备: Windows7 32 位系统: Shellcode 使用 kali linux Metasploit 生成 shellcode Wind ...
- [考试反思]0916csp-s模拟测试44:可笑
出现了有史以来第一个3首杀AK啊...然而跟我没有丝毫关系 (曾经还是有一次考试差点就有那么一点关系的...) 然而反正我考得很水就是了.不是很垃圾,而是很水. 这套题是真的水... T1不会证复杂度 ...
- 如何把链表以k个结点为一组进行翻转
[MT笔试题] 题目描述: K 链表翻转是指把每K个相邻的结点看成一组进行翻转,如果剩余结点不足 K 个,则保持不变.假设给定链表 1 -> 2 -> 3 -> 4 -> 5 ...
- [ PyQt入门教程 ] PyQt5中数据表格控件QTableWidget使用方法
如果你想让你开发的PyQt5工具展示的数据显得整齐.美观.好看,显得符合你的气质,可以考虑使用QTableWidget控件.之前一直使用的是textBrowser文本框控件,数据展示还是不太美观.其中 ...
- 小程序 数字过千 以K显示
先新建一个 wxs 文件 每一个 .wxs 文件和 <wxs> 标签都是一个单独的模块. 每个模块都有自己独立的作用域.即在一个模块里面定义的变量与函数,默认为私有的,对其他模块不可见. ...
- 一次shardingjdbc踩坑引起的胡思乱想
项目里面的一个分表用到了sharding-jdbc 当时纠结过是用mycat还是用sharding-jdbc的, 但是最终还是用了sharding-jdbc, 原因如下: 1. mycat比较重, 相 ...
- 深入讲解 Laravel 的 IoC 服务容器
众所周知,Laravel 控制反转 (IoC) / 依赖注入 (DI) 的功能非常强大.遗憾的是, 官方文档 并没有详细讲解它的所有功能,所以我决定自己实践一下,并整理成文.下面的代码是基于 Lara ...
- nyoj 458-小光棍数 (471)
458-小光棍数 内存限制:64MB 时间限制:1000ms 特判: No 通过数:6 提交数:6 难度:1 题目描述: 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111, ...
- 利用Python学习线性代数 -- 1.1 线性方程组
利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...
- vuejs 入门
配置环境教程网上太多了,就不赘述了,建议使用npm 命令行安装,总觉得这个念头不会使用命令行配置环境的就不是一个好的程序员,或者为了方便也可以直接在本地建一个.html文件,然后引用下面的链接即可. ...