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

一、shell中的函数

[[email protected] aming]# cd /root/shell/aming
[[email protected] aming]# vim fun1.sh //需要注意函数名不能跟shell中的一些关键字冲突
#!/bin/bash
function inp(){
echo $1 $2 $3 $0 $#
}

inp 1 a 2
[[email protected] aming]# sh fun1.sh
1 a 2 fun1.sh 3 //$0是脚本名称、3是参数个数

继续改良脚本:
[[email protected] aming]# vim fun1.sh
#!/bin/bash
function inp(){
echo "The first 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 b a 2 3 adf
[[email protected] aming]# sh fun1.sh //执行脚本
The first par is b
The second par is a
The third par is 2
the scritp name is fun1.sh
the number of par is 5

修改脚本:
[[email protected] aming]# vim fun1.sh
#!/bin/bash
function inp(){
echo "The first 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 $1 $2 $3
[[email protected] aming]# sh fun1.sh 1 //假如这里写一个参数,查看运行结果
The first par is 1
The second par is
The third par is
the scritp name is fun1.sh
the number of par is 1

定义一个加法的函数,shell中定义的函数必须放到上面
[[email protected] aming]# vim fun2.sh
#!/bin/bash
sum() {
s=$[$1+$2] //s是一个变量,s=$1+$2
echo $s
}

sum 1 10 //求和1+10
[[email protected] aming]# sh fun2.sh //执行脚本
11
[[email protected] aming]# sh -x fun2.sh

  • sum 1 10
  • s=11
  • echo 11
    11

    这个函数是专门用来显示IP的
    [[email protected] aming]# vim fun3.sh
    #!/bin/bash
    ip()
    {
    ifconfig |grep -A1 "$1: "|awk ‘/inet/ {print $2}‘
    }

read -p "Please input the eth name: " eth
ip $eth
[[email protected] aming]# sh -x fun3.sh //执行脚本

  • read -p ‘Please input the eth name: ‘ eth
    Please input the eth name: ens33:0 //输入$1参数
  • ip ens33:0
  • ifconfig
  • grep -A1 ‘ens33:0: ‘
  • awk ‘/inet/ {print $2}‘
    192.168.238.150 //得到ens33:0网卡的IP

改进脚本:需要判断输入的网卡是不是系统中的网卡,如果网卡存在,IP不存在,如何判断

我们现在的需求是看ens33这块网卡的IP信息:
[[email protected] aming]# ifconfig |grep -A1 "ens33" //-A1表示显示关键词,包括下面的一行,但是它看到的是两块网卡的信息,包括了虚拟网卡信息,继续让它只显示ens33网卡IP
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.238.128 netmask 255.255.255.0 broadcast 192.168.238.255

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.238.150 netmask 255.255.255.0 broadcast 192.168.238.255

[[email protected] aming]# ifconfig |grep -A1 "ens33: " //可以找到两块网卡名称不一样的地方
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.238.128 netmask 255.255.255.0 broadcast 192.168.238.255
You have new mail in /var/spool/mail/root
[[email protected] aming]# ifconfig |grep -A1 "ens33: "|grep ‘inet‘ //过滤出来inet这一行
inet 192.168.238.128 netmask 255.255.255.0 broadcast 192.168.238.255
[[email protected] aming]# ifconfig |grep -A1 "ens33: "|awk ‘/inet/ {print $2}‘ //使用这个命令过滤IP
192.168.238.128
[[email protected] aming]# ifconfig |grep -A1 "ens33: "|grep ‘inet‘ |awk ‘{print $2}‘ //两个命令都可以
192.168.238.128
写shell脚本需要不断的去调试,不断的去寻求结果,达到预设,学习shell脚本一定要多练习,

二、shell中的数组

[[email protected] aming]# b=(1 2 3) //定义数组
[[email protected] aming]# echo ${b[@]} //获取数组的元素个数,获取整个数组
1 2 3
[[email protected] aming]# echo ${b[]}
1 2 3
[[email protected] aming]# echo ${b[0]} //方括号里面的数字表示下标,表示元素是第几个
1
[[email protected] aming]# echo ${#b[@]} //#表示一个个数
3
数组赋值
[[email protected] aming]# b[3]=a
[[email protected] aming]# echo ${b[
]}
1 2 3 a
[[email protected] aming]# b[3]=aaa
[[email protected] aming]# echo ${b[]}
1 2 3 aaa
[[email protected] aming]# unset b[3] //数组的删除
[[email protected] aming]# unset b
[[email protected] aming]# echo ${b[
]} //把数组的值清空删除

[[email protected] aming]# a=(seq 1 10)
[[email protected] aming]# echo ${a[*]}
1 2 3 4 5 6 7 8 9 10
需求:截取4-7这四个数字,其实是从第3个元素开始往后截取4个数字
echo ${a[@]:0:3}其中冒号作为分隔符,0表示从第几个元素开始,再冒号后面数字表示截取几个
那么上面的需求就可以这样这样写:
[[email protected] aming]# echo ${a[@]:3:4} //从第3个元素开始往后截取4个数字
4 5 6 7
[[email protected] aming]# echo ${a[@]:0-3:2} //从倒数第三个元素开始,截取2个数字
8 9

数组替换
[[email protected] aming]# echo ${a[@]/8/6} //把8修改为6
1 2 3 4 5 6 7 6 9 10

三、告警系统需求分析

原文地址:http://blog.51cto.com/13669226/2146150

时间: 2024-11-04 00:41:22

shell中的函数 shell中的数组 告警系统需求分析的相关文章

Swift 中的函数(中)

学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 1 import Foundation 2 3 //函数 4 5 //1.多个返回值 6 func area(width: Double,height: Double) -> (Double,Double) 7 { 8 var b = width 9 var a = width * height 10 return (a,b) 11 } 12 printl

shell变量、函数、控制流和数组以及字符串的截取

一.变量 1.shell变量名 (1)可以由字母.数字.下划线等字符组成.但是第一个字符必须是字母或者下划线. (2)若果变量中包含下划线(_)则要特别注意,$project_svn_$date.tar.gz 和 {$project_svn}_$date.tar.gz.第一个shell理解为$project是一个变量. 2.变量的赋值: variable=value note:赋值运算符前后不能有空格,否则会报错. 3.变量分类: 内部变量是为了shell编程的而设定的变量. 本地变量是在代码块

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

分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6"; //这是一字符串 var strs= new Array(); //定义一数组 strs=str.split(","); //字符分割 for (i=0;i<strs.length ;i++ ) { document.write(strs[i]+"<b

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

weekdays.pyimport numpy as npfrom datetime import datetimedef datestr2num(s): return datetime.strptime(s.decode('ascii'), "%d-%m-%Y").date().weekday() dates, open, high, low, close=np.loadtxt('data.csv', dtype=float, delimiter=',', usecols=(1, 3

Shell脚本中的函数、数组

Shell脚本中的函数 Shell脚本中的数组 原文地址:http://blog.51cto.com/13515599/2107416

Makefile中的函数

Makefile 中的函数 Makefile 中自带了一些函数, 利用这些函数可以简化 Makefile 的编写. 函数调用语法如下: $(<function> <arguments>) # 或者 ${<function> <arguments>} <function> 是函数名 <arguments> 是函数参数 1.1 字符串函数 字符串替换函数: $(subst <from>,<to>,<text&

C++调用lua中的函数

测试lua脚本 一.lua中的全局函数 lua中的全局函数保存在lua的global表里 二.lua模块中的函数 lua中的模块被放在lua的global表里,模块中的函数以变量的形式保存在模块表里,比如test模块里的PrintMessage函数保存在test表里,key为PrintMessage,value是函数体.所以调用模块里的函数,首先lua_getglobal把模块压入栈,接着lua_gettable或lua_getfield把函数压入栈,最后lua_pcall调用函数.

Oracle中REGEXP_SUBSTR函数(转)

Oracle中REGEXP_SUBSTR函数 Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合. REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式__positio

20.16 20.17shell中的函数(上下);20.18 shell中的数组;20.19 告警系统需求分析

20.16 shell中的函数(上) 函数就是把一段代码整理到了一个小单元中,并给这个小单元起 一个名字,当用到这段代码时直接调用这个小单元的名字即可. 1. [[email protected] ~]# vi fun1.sh 添加内容: #!/bin/bash function inp(){ echo "The first par is $1" echo "The second par is $2" echo "The third par is $3&q