Linux centosVMware shell中的函数、shell中的数组、

时间:2023-06-10 12:25:20

一、shell中的函数

函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。

格式: function _name()

{

command

}

函数必须放在最前边

示例1:

#! /bin/bash

input()

{

echo $1 $2 $# $0

}

input 1 a b

Linux centosVMware shell中的函数、shell中的数组、

$0代表为这个scritp

$# 统计有几个参数

Linux centosVMware shell中的函数、shell中的数组、

示例2:

#! /bin/bash

sum()

{

s=$[$1+$2]

echo $s

}

sum 1 2

vim fun2.sh

Linux centosVMware shell中的函数、shell中的数组、

Linux centosVMware shell中的函数、shell中的数组、

示例3:提取本机有用ip

#! /bin/bash

ip()

{

ifconfig|grep -A1 "$1" |tail -1 |awk '{print $2}' |awk -F ':' '{print $2}'

}

read -p "please input the eth name:" e

myip='ip $e'

echo "$e address is $myip"

直接执行不会有ip提示需要改进

Linux centosVMware shell中的函数、shell中的数组、

grep -A1 显示关键词,包括关键词下一行

Linux centosVMware shell中的函数、shell中的数组、

-w精准判断,同样不能过滤ens33:0:

Linux centosVMware shell中的函数、shell中的数组、

改进为

[root@davery shell]# ifconfig |grep -A1 "ens33: "  才能准确判断,:后有空格

Linux centosVMware shell中的函数、shell中的数组、

打印含有inte的行

Linux centosVMware shell中的函数、shell中的数组、

提取含有inte这一行的第二个字段

Linux centosVMware shell中的函数、shell中的数组、

最终脚本

vim fun3.sh

Linux centosVMware shell中的函数、shell中的数组、

Linux centosVMware shell中的函数、shell中的数组、

或者

vim fun3.sh

Linux centosVMware shell中的函数、shell中的数组、

Linux centosVMware shell中的函数、shell中的数组、

或者

Linux centosVMware shell中的函数、shell中的数组、

输入ens33

Linux centosVMware shell中的函数、shell中的数组、

但只能输出第一个ip,应该改为grep -A1 “$1”

Linux centosVMware shell中的函数、shell中的数组、

输入ens33:0      ip为150

Linux centosVMware shell中的函数、shell中的数组、

输入ens33 ip为101

Linux centosVMware shell中的函数、shell中的数组、

输入ip不存在的情况

Linux centosVMware shell中的函数、shell中的数组、

二、shell中的数组

定义数组 b=(1 2 3); echo ${b[@]}

Linux centosVMware shell中的函数、shell中的数组、

echo ${#a[@]} 获取数组的元素个数

Linux centosVMware shell中的函数、shell中的数组、

echo ${b[2]} 读取第三个元素,数组从0开始

Linux centosVMware shell中的函数、shell中的数组、

echo ${b[*]} 等同于 ${b[@]} 显示整个数组

Linux centosVMware shell中的函数、shell中的数组、

数组赋值

b[1]=100; echo ${b[@]}

Linux centosVMware shell中的函数、shell中的数组、

b[3]=2; echo ${b[@]} 如果下标不存在则会自动添加一个元素

Linux centosVMware shell中的函数、shell中的数组、

数组的删除

uset b; unset b[1]

Linux centosVMware shell中的函数、shell中的数组、

数组分片

b=(`seq 1 5`)

echo ${b[@]:0:3} 从第一个元素开始,截取3个

echo ${b[@]:1:4} 从第二个元素开始,截取4个

echo ${b[@]:0-3:2} 从倒数第3个元素开始,截取2个

Linux centosVMware shell中的函数、shell中的数组、

数组替换

echo ${b[@]/3/100}

Linux centosVMware shell中的函数、shell中的数组、

a=(${b[@]/3/100})

三、告警系统需求分析

需求:使用shell定制各种个性化告警工具,但需要统一化管理、规范化管理。

思路:指定一个脚本包,包含主程序、子程序、配置文件、邮件引擎、输出日志等。

主程序:作为整个脚本的入口,是整个系统的命脉。

配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。

子程序:这个才是真正的监控脚本,用来监控各个指标。

邮件引擎:是由一个python程序来实现,它可以定义发邮件的服务器、发邮件人以及发件人密码

输出日志:整个监控系统要有日志输出