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
shell中的函数、数组、报警系统脚本的更多相关文章
- shell中的函数、shell中的数组、告警系统需求分析
7月16日任务 20.16/20.17 shell中的函数20.18 shell中的数组20.19 告警系统需求分析 20.16/20.17 shell中的函数 函数就是一个子shell就是一个代码段 ...
- Linux centosVMware shell中的函数、shell中的数组、
一.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function _name() { command ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- C Shell中的变量数组
今天刚刚在看一点C Shell的内容,发现一个挺好玩的东西!就是环境变量可以像数组那样来设置!具体设置语法如下: set variable=(element1 element2 ...) //注意元素 ...
- js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么
js课程 3-10 js中字符串函数数组函数和其它语言中对应函数的区别和联系是什么 一.总结 一句话总结:js中是对象点方法的形式,这些方法都是对象的方法,而在php.java中却不是这样. 1.j ...
- 在Shell中使用函数文件
需要编写一个较庞大的脚本时,可能会涉及许多函数.变量.这是通常建议将众多的函数.变量放入一个单独的脚本内.这样做的好处很明显,不用担心某个函数.变量是否已经被定义和使用,也不用频繁地定义.清除函数和变 ...
- Shell中的函数
一.在脚本中定义函数 与变量一样,在使用函数之前应该对函数进行定义.与其他编程类语言相比,由于没有数据类型的概念,因此也不必定义函数的类型. (1)在脚本中可以使用以下方式定义函数: function ...
- 小苏的Shell编程笔记之六--Shell中的函数
http://xiaosu.blog.51cto.com/2914416/531247 Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以 ...
- shell中的函数、数组
函数定义: 数组:
随机推荐
- SQL通配符
通配符可用于替代字符串中的任何其他字符. 在 SQL 中,通配符与 SQL LIKE 操作符一起使用. SQL 通配符用于搜索表中的数据. 在 SQL 中,可使用以下通配符: 通配符 描述 % 替代 ...
- keeplived
keepalived高可用集群. keepalived故障切换转移原理1vrrp协议:(vritual router redundancy protocol)虚拟路由冗余协议,2故障转移.keep ...
- git 的安装与初始化
1搭建本地git服务器: 1.1安装git 对于ubuntu系统,一般自带git,可以使用git --version 查看版本号 ,或使用apt-get install git . centos上对 ...
- mybatis源码解析之Configuration加载(二)
概述 上一篇我们讲了configuation.xml中几个标签的解析,例如<properties>,<typeAlises>,<settings>等,今天我们来介绍 ...
- kafka consumer 0.8.2.1示例代码
package test_kafka; import java.util.ArrayList; import java.util.HashMap; import java.util.List; imp ...
- 常用的settings.xml文件
<?xml version="1.0"?> <settings> <localRepository>/Users/bernie.cx/.m2/r ...
- GridControl 主从模式(Master-detail)子表格获取行数据
今天遇到一个问题,gridcontrol使用主从表的时候,在子表中获取子表的行数据时居然获取不到,郁闷了很久.然后在网上找到方法(出处在这里:https://q.cnblogs.com/q/83412 ...
- CentOS7.4+OpenStack-Queens版本部署
一.准备工作.网络选择NAT 创建两台虚拟机:linux-node1.linux-node2 node1: 修改主机名 [root@localhost ~]# hostnamectl set-host ...
- 解决linux root 认证失败的问题
https://jingyan.baidu.com/article/3052f5a1f1b17c97f31f8688.html
- vscode里使用.vue代码模板的方法
1.设置.vue模板 打开编辑器,点击文件 —— 首选项 —— 用户代码片段,会弹出来一个输入框. 在输入框输入vue,回车,会打开一个vue.json文件. 在里面复制以下代码: { "P ...