zoukankan      html  css  js  c++  java
  • shell中的函数、数组、报警系统脚本

    1、shell中的函数

    函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这
    个小单元的名字即可。
    格式: function f_name() {
    commond

     函数必须要放在脚本的最前面
    案例1:

    #!/bin/bash
    input() {
    echo "第一个参数是$1"
    echo "第二个参数是$2"
    echo "总共有多少个参数 $#"
    echo "这个脚本的名字是 $0"
    }
    read -p "input a num:" n
    read -p "input a num:" m
    input $n $m
    案例2:

    #!/bin/bash
    input() {
    echo "第一个参数是$1"
    echo "第二个参数是$2"
    echo "总共有多少个参数 $#"
    echo "这个脚本的名字是 $0"
    }
    input $1 $2

     函数中的运算:
    案例1:

    #!/bin/bash
    sum(){
    s=$[$1+$2]
    echo $s
    }
    sum $1 $2
    案例2:

    #!/bin/bash
    sum(){
    s=$[$1+$2+$3]
    echo $s
    }
    read -p "aaa:" a
    read -p "bbb:" b
    read -p "ccc:" c

    sum $a $b $c

     ip 显示函数(花了很长时间才把所有的给整合好,尤其是在输入数字时,显示对应的网卡和IP):

    #!/bin/bash
    #by yumingzhen
    #
    echo ""
    k=0
    for i in `ifconfig | awk '/:/ {print $1}' |grep ":" |sed 's/://g'`
    do
    z=$i
    k=$[$k+1]
    m=$k
    echo $m=$i
    cc=$cc$i:
    done
    echo "按a show all IP addr"
    echo "按q|quit|Q exit"
    ip_fun(){
    ifconfig |grep -A1 "$id" | awk '/inet/ {print $2}'
    }
    while :
    do
    echo ""
    read -p "input a num to get ip_add:" n
    end=`ifconfig | awk '/:/ {print $1}' |grep ":" |wc -l`
    n1=`echo $n |sed 's/[0-9]//g'`
    if [ $n == "q" ] || [ $n == "quit" ] || [ $n == "Q" ] ;then
    exit 0
    elif [ $n == "a" ];then
    for a in `seq 1 $end`
    do
    id=`echo $cc |cut -d':' -f $a`
    echo $id=`ip_fun`
    done
    exit 0
    elif [ -n "$n1" ] || [ -z "$n" ] || [ "$n" -gt "$end" ];then
    echo "请输入正确的数字,不大于$end"
    continue
    fi

    id=`echo $cc |cut -d':' -f $n `
    echo ""
    echo $id IP=`ip_fun`
    done

     

    2、数组
    @ 或 * 号

    定义数组 a=(1 2 3 4 5); echo ${a[@]}
    echo ${#a[@]} 获取数组的元素个数
    echo ${a[2]} 读取第三个元素,数组从0开始
    echo ${a[*]} 等同于 ${a[@]} 显示整个数组
    数组赋值
    a[1]=100; echo ${a[@]}
    a[5]=2; echo ${a[@]} 如果下标不存在则会自动添加一个元素
    数组的删除
    uset a; unset a[1]

    数组分片
    a=(`seq 1 5`)
    echo ${a[@]:0:3} 从第一个元素开始,截取3个
    echo ${a[@]:1:4} 从第二个元素开始,截取4个
    echo ${a[@]:0-3:2} 从倒数第3个元素开始,截取2个
    数组替换
    echo ${a[@]/3/100}
    a=(${a[@]/3/100})

     

    3、报警系统主脚本

    #!/bin/bash

    #Written by aming.
    # 是否发送邮件的开关
    export send=1
    # 过滤ip地址
    export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {print $2}'`
    dir=`pwd`
    # 只需要最后一级目录名
    last_dir=`echo $dir|awk -F'/' '{print $NF}'`
    # 下面的判断目的是,保证执行脚本的时候,我们在bin目录里,不然监控脚本、邮件和日志很有可能找不到
    if [ $last_dir == "bin" ] || [ $last_dir == "bin/" ]; then
    conf_file="../conf/mon.conf"
    else
    echo "you shoud cd bin dir"
    exit
    fi
    exec 1>>../log/mon.log 2>>../log/err.log
    echo "`date +"%F %T"` load average"
    /bin/bash ../shares/load.sh
    #先检查配置文件中是否需要监控502
    if grep -q 'to_mon_502=1' $conf_file; then
    export log=`grep 'logfile=' $conf_file |awk -F '=' '{print $2}' |sed 's/ //g'`
    /bin/bash ../shares/502.sh
    fi




  • 相关阅读:
    jquery easyui-datagrid手动增加删除重置行
    jsp中一行多条数据情况
    JQuery操作下拉框
    解决juqery easyui combobox只能选择问题
    oracle中WMSYS.WM_CONCAT函数的版本差异
    oracle wm_concat(column)函数的使用
    Javascript九大排序算法详解
    C#和VB新版本的最新特性列表
    Oracle中如何区别用户和模式
    远程控制数据库实用SQL重启功能
  • 原文地址:https://www.cnblogs.com/nfyx/p/9339223.html
Copyright © 2011-2022 走看看