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中的函数、数组
函数定义: 数组:
随机推荐
- linux IPtable防火墙 禁止和开放端口
1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放.下面是命令实现: iptables -P INPUT DROPiptables -P FORWARD DROPiptable ...
- day44-Celery异步分布式
celery异步分布式Celery是一个python开发的异步分布式任务调度模块.Celery本身并不提供消息服务,使用第三方服务,也就是borker来传递任务,目前支持rebbimq,redis, ...
- svn 删除svn项目命令
svn delete svn://127.0.0.1:3690/project -m delete
- [tour]2019HUST onsite签到
先定一个小目标,从签到题开始讲清楚 虽然因为我喜欢签到题的气球导致签到题并没有行使责任.. F.Mesh 和某CF题(我找不到了)完 全 一 致,由于某些玄学原因没有get到(orz谢罪) 给出一个6 ...
- 使用labelme制作自己的数据集
# python3 conda create --name=labelme python=3.6 source activate labelme # conda install -c conda-fo ...
- centos源码安装mysql5.7.25-boost
首先在CentOS6.5的版本安装mysql 创建安装目录,并解压 安装mysql的依赖包.这里需要用到阿里源,去吧阿里源宕到本机 安装依赖包,gcc.gcc-c++.cmake.ncurses-de ...
- vue 特点
1.双向绑定 v-model 2.组件化 页面扩展 单文件组件 js css html 都在一个文件中 好处:前端组件化的突破性设计 scoped限制css的渲染,防止污染 lang 定义预处理器 ...
- Linux 下编程
关于Linux 下的C语言编译命令和编程要点! https://www.cnblogs.com/wfwenchao/p/3985153.html?utm_source=tuicool&utm_ ...
- 配置jQuery环境
获取最新版jQuery 一.jq库类型说明 jQuery.js(开发版):完整无压缩,主要用于学习.开发和测试 jQuery.min.js(生产版):主要用于产品开发和项目 二.在页面引入 <s ...
- 练习 HashSet 去重复
package com.rf.xs.list; import java.util.HashSet; public class Person { private String name; private ...