一:死循环
语法1:
while true;do
循环体
if CONDITION;then
break
fi
done
语法2:
until false;do
循环体
if CONDITION;then
break
fi
done
就是一直循环直到某个条件出现才结束咯
例:
每隔3秒查看当前系统上是否有名为“gentoo”的用户登录
如果登录了,则显示gentoo已经登录;如果未登录就显示仍未登录,并显示这是第几次查看了
[root@BAIYU_110 shell]# cat 12.sh #!/bin/bash # 用变量替换“gentoo”和相应的命令就可以实现服务或用户上线下线提醒 # declare -i i=0 while true;do if who|grep "gentoo" &>/dev/null;then echo "The gentoo is logged" break fi let i++ echo "$i gentoo is not login" sleep 3 done
二、while、for的特殊用法
while循环的特殊用法:
遍历文件的每一行
语法:
while read VARIABLE;do
循环体
done < /FILENAME
例:找出UID为偶数的所有用户,显示其用户名和UID
[root@BAIYU_110 shell]# cat 13.sh #!/bin/bash # while read line;do userid=$(echo $line|cut -d: -f3) if [ $[$userid%2] -eq 0 ];then echo $line | cut -d: -f1,3 fi done</etc/passwd [root@BAIYU_110 shell]# bash 13.sh root:0 daemon:2 mail:8 haldaemon:68 ntp:38 sshd:74 tcpdump:72 gentoo:500
for循环的特殊用法
语法:
for ((expr1;expr2;expr3));do
循环体
done
expr1:定义控制变量,并初始赋值
expr2:循环控制条件
expr3:修正控制变量
例:求100以内所有正整数之和
[root@BAIYU_110 shell]# cat 14.sh #!/bin/bash for ((i=1;i<=100;i++));do let sum+=$i done echo "The sum is $sum" [root@BAIYU_110 shell]# bash 14.sh The sum is 5050
打印九九乘法表
[root@BAIYU_110 shell]# cat 15.sh #!/bin/bash # for ((x=1;x<=9;x++));do # 在这种特定格式下数字比较也可以直接使用<=号了 for ((y=1;y<=$x;y++));do echo -n -e "${y}x${x}=$[$y*$x]\t" done echo done [root@BAIYU_110 shell]# bash 15.sh 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1x4=4 2x4=8 3x4=12 4x4=16 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 [root@BAIYU_110 shell]#
三、函数
function:功能
把一段具有独立功能代码封装在一起,并给予命名,后续可直接通过给定的函数名调用整体代码
函数的作用:
代码重用
模块化编程
函数的使用方法:
先定义:编写函数代码
后调用:给出函数名,还可按需传递参数
定义方法:
语法1:
function NAME {
函数体
}
语法2:
NAME(){
函数体
}
自定义函数状态返回值:
return [#]
0:成功
1-255:失败
注意:函数代码执行时,一旦遇到return,函数代码终止运行,函数返回;
模块化编程
功能:把脚本文件中的代码分隔为多段,放在不同的文件中
假设/root/bin/srv目录有两个文件:
(1) 函数文件
(2) 脚本文件
为脚本使用配置文件
一个文件中只定义变量
脚本文件source此变量定义的文件
变量的作用域:
局部变量:
local VARIABLE=value
存活时间:
函数执行开始,至函数返回结束;
shell基础之四:函数、死循环及for,while特殊用法
原文地址:http://xiexiaojun.blog.51cto.com/2305291/1695041