while循环
【while】
#!/bin/bash
while :
do
load=`w|head -1|awk -F 'load average: ' '{print $2}'|cut -d. -f1`
if [ $load -gt 10 ];then
top|mail -s "load is high: $load" hudechao@163.com
fi
sleep 30
done
1、while : 【while后带冒号表示始终为真】
2、w|head -1 【取系统性能值得第一行】
3、awk -F 'load average: ' '{print $2}'|cut -d. -f1
【以load average: 作为分隔符,输出第二段值】
【cut -d. -f1 表示以点. 作为分隔符,取-f1第一段值】
cut用法:cut -d "分隔符" -f2 文件
-c 以字符为单位进行分割
-d 分隔符,后面用引号引住分隔符
-f 与-d 连用,指定显示那个区域
cut -d[:] -f 列数,列数,...
cut -d: -f 2 以冒号分割取第二列
cut -d: -f 2,3 以冒号分割取第2列,第3列
cut -d: -f 2- 以冒号分割取第2列到最后
#!/bin/bash
#循环判断输入的是否为纯数字,直到输入的为纯数字,继续判断奇偶,若输入为空提示继续输入
while true
do
read -p "请输入一个数字:" num
if [ ! -n "$num" ];then
echo "输入值为空"
continue
fi
a=`echo $num|grep -Ec [^0-9]`
if [ "$a" -eq 1 ];then
echo "输入的为非纯数字,请输入纯数字"
continue
#read -p "请输入一个数字:" num
fi
if [ "$a" -eq 0 ];then
b=$(($num%2))
if [ "$b" -eq 0 ];then
echo "$num 是偶数"
else
echo "$num 是奇数"
fi
exit
fi
done
【continue】关键字:表示循环体下面的语句不再执行,但是循环还是要的,从头再开始执行一遍循环
【break】关键字:退出本次的循环体,循环体外的仍会执行到
【exit】关键字:不仅退出循环体,而且还退出本次执行的脚本
untile循环
until 条件为假时,执行循环语句
语法:
until 条件
do
循环体
done
举例1、
#!/bin/bash
n=1
until [ $n -gt 5 ]
do
echo $n
n=`expr $n + 1`
done
【函数】
定义函数sum
格式1:
sum(){
command
}
sum parm1 parm2...【后面可接参数1,参数2,...】
格式2:
function sum(){
command
}
举例1:
#!/bin/bash
sum(){
s=$[$1+$2]
echo $s
}
sum $1 $2
举例2:
获取网卡的IP地址
#!/bin/bash
ip(){
ifconfig | grep -A1 "$1"|tail -1|awk '{print $2}'
}
read -p "请输入你的网卡名" name
myip=`ip $name`
echo "$name address is $myip"
举例3:
#!/bin/bash
CURR_HOME(){
app_home=$(dirname $0)
app_path=$(readlink -f $app_home)
echo $app_path
}
APP_HOME=$CURR_HOME()
echo $APP_HOME
注:这里脚本里的函数CURR_HOME()的内容 echo $app_path 即可看作是该函数的返回值