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中的数组、告警系统需求分析的更多相关文章

  1. java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包

    Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...

  2. shell中的函数 shell中的数组 告警系统需求分析

     

  3. javascript 中 split 函数分割字符串成数组

    分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6 ...

  4. 关于numpy中的函数return中加入字符串类型数据后,小数点精度变化

    weekdays.pyimport numpy as npfrom datetime import datetimedef datestr2num(s): return datetime.strpti ...

  5. 关于db2中listagg函数开发中的体验

    一.首先解释一下可能会查询的基础问题: 1.1db2 “with ur”是什么意思: 在DB2中,共有四种隔离级:RS,RR,CS,UR.以下对四种隔离级进行一些描述,同时附上个人做试验的结果.隔离级 ...

  6. [Python]Python Class 中的 函数定义中的 self

    In [80]: class MyClass001: ....: def selfDemo(self): ....: print 'My Demo' ....: In [81]: p = MyClas ...

  7. Makefile中的函数

    Makefile 中的函数 Makefile 中自带了一些函数, 利用这些函数可以简化 Makefile 的编写. 函数调用语法如下: $(<function> <arguments ...

  8. Oracle中REGEXP_SUBSTR函数(转)

    Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','2 ...

  9. Oracle中REGEXP_SUBSTR函数(字符串转多行)

    Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...

  10. Oracle中REGEXP_SUBSTR函数

    Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20',' ...

随机推荐

  1. textarea如何实现高度自适应(一)

    转自轩枫阁 - http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.html 方法一:div模 ...

  2. NOI1995 石子合并 [Luogu P1880]

    一道区间dp的模板题,这里主要记一下dp时环形数据的处理. 简略版:方法一:枚举分开的位置,将圈化为链,因此要做n次. 方法二:将链重复两次,即做一个2n-1长度的链,其中第i(i<=n)堆石子 ...

  3. android 7.0 pm install 失败问题

    这两天,把app内置成系统文件或者系统签名取得系统权限,发现使用pm install path在低版本上可行,在高版本就安装失败 抛出 NullPointException,查看了一下源码,发现对包名 ...

  4. day7-format字符串格式化

    tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18) print ...

  5. python函数的基本语法<二>

    函数的流程控制: if...else... a = 100 b = 200 if a == 100 and b ==300: print('100,200') elif b == 200: print ...

  6. .NET进阶篇06-async异步、thread多线程2

    知识需要不断积累.总结和沉淀,思考和写作是成长的催化剂 内容目录 一.线程Thread1.生命周期2.后台线程3.静态方法1.线程本地存储2.内存栅栏4.返回值二.线程池ThreadPool1.工作队 ...

  7. Apache Spark 3.0 预览版正式发布,多项重大功能发布

    2019年11月08日 数砖的 Xingbo Jiang 大佬给社区发了一封邮件,宣布 Apache Spark 3.0 预览版正式发布,这个版本主要是为了对即将发布的 Apache Spark 3. ...

  8. java多线程回顾3:线程安全

    1.线程安全问题 关于线程安全问题,有一个经典案例:银行取钱问题. 假设有一个账户,有两个线程从账户里取钱,如果余额大于取钱金额,则取钱成功,反之则失败. 下面来看下线程不安全的程序会出什么问题. 账 ...

  9. Spring简单的示例

    参考资料:https://how2j.cn/k/spring/spring-ioc-di/87.html.https://www.w3cschool.cn/wkspring/dgte1ica.html ...

  10. Mybatis加入日志

    *在mybatis-config.xml核心配置文件中加入如下设置,在configration中标签中加入 <!--打印日志,方便看输出SQL --> <settings> & ...