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

原文地址:https://www.cnblogs.com/nfyx/p/9339223.html

时间: 2024-07-30 17:38:00

shell中的函数、数组、告警系统脚本的相关文章

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

shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() { ?? ?? ?? ?? ?? ?? ? command? ?? ?? ?? ? } 函数必须要放在最前面 脚本示例1(用来定义函数打印参数) [[email protected] aming]# vim fun1.sh [[email protected] aming]# cat fun1.sh #!/bin/bas

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

20.16-20.17 shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() { command } 函数必须要放在最前面 脚本实例1 #!/bin/bash function inp(){ echo $1 $2 $3 $0 $# } inp 1 a 2 脚本实例2 #!/bin/bash sum() { s=$[$1+$2] echo $s } sum 1 2 脚本实例3

20.16/20.17 shell中的函数20.18 shell中的数组20.19 告警系统需求分析

20.16/20.17 shell中的函数显示变量的隐函数执行的结果参数只有一个1,执行的结果 第一个是1,第二个是空的,第三个也是空的,肢本的名字是fun1.sh,总共有1个参数加法的函数显示IP的隐函数-A1是显示关键词的一行包括下一行精准查找到IP脚本就可以这样写,ip $eth 是输入一个网卡的名字#!/bin/baship() {ifconfig |grep -A1 "ens33: " |awk '/inet/ {print $2}'}read -p "Please

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

一.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可.函数就是一个子shell,一个代码段. shell中的函数必须要定义在脚本的最上面. 格式: function f_name() { command }函数必须要放在最前面 f_name:函数名,最好不要和shell中的一些关键词冲突,比如for. command:具体命令 function这个单词可以省略掉的. 示例1 #!//bin/bash functio

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

一.shell中的函数[[email protected] aming]# cd /root/shell/aming[[email protected] aming]# vim fun1.sh //需要注意函数名不能跟shell中的一些关键字冲突#!/bin/bashfunction inp(){echo $1 $2 $3 $0 $#} inp 1 a 2[[email protected] aming]# sh fun1.sh1 a 2 fun1.sh 3 //$0是脚本名称.3是参数个数 继

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

一.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() { command } 注意:函数必须要放在最前面!function可以省略直接写函数名. 1.示列:打印shell的参数,函数input() #!/bin/bash input() { ? ? echo $1 $2 $# $0 } input 1 a b $1 表示第一个参数,$0表示文件名 $#表示参数的个数编辑

20.16-20.17 shell中的函数;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

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求

20.16/20.17 shell中的函数函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可.格式: function f_name() {? ?? ?? ?? ?? ?? ?? ? command? ?? ?? ?? ? }函数必须要放在最前面示例1 #!/bin/bashinput() {? ? echo $1 $2 $# $0} input 1 a b 示例2 #!/bin/bashsum() {? ? s=$[$1+$2]? ?

C Shell中的变量数组

今天刚刚在看一点C Shell的内容,发现一个挺好玩的东西!就是环境变量可以像数组那样来设置!具体设置语法如下: set variable=(element1 element2 ...) //注意元素之间用空格来间隔 比如我在C Shell中运行了这么一条语句 set var=(123 def hij),那么他就表示设定了一个变量数组,其中var[1]是123,var[2]是def!很奇怪的是它这个数组不是从0开始的,var[0]是一个空的字符串!或许这个var[0]像C语言主函数的argv[0