标签:linux 循环控制
循环语句总结
本文详细介绍流程控制语句之循环语句,依次如下:
1,for循环语句一般使用与特殊使用
2,while循环语句一般使用与特俗使用的
3,until语句使用
4,循环控制:continue,break在循环语句中的使用
5,函数的使用
1,for循环语句
for循环一般格式为:列表依次匹配变量,do后面是执行体。列表默认为一个或者多个空格或者TAB间隔
for 变量 in 列表
do
command1
command2
...
commandN
done
示例:列出1到5数字
示例:command使用命令引用
for循环的特殊用法:for((赋值;条件;运算语句))
for ((expr1;expr2;expr3)); do
循环体
done
expr1: 定义控制变量,并初始赋值;
expr2: 循环控制条件;
进入条件:控制条件为“真”
退出条件:控制条件为“假”
expr3: 修正控制变量
示例:求100以内所有正整数之和;
2,while循环语句
while循环一般格式语法:
while CONDTION; do
循环体
done
进入条件:当CONDITION为“真”;
退出条件:当CONDITION为“假”;
while CONDITION; do
循环体
控制变量的修正表达式
done
示例:求100以内所有正整数之和;
while循环的特殊用法:
遍历文件的每一行:
while read VARIABLE; do
循环体
done < /PATH/FROM/SOME_FILE
示例:找出UID为偶数的所有用户,显示其用户名和ID号;
3,unitl循环
unitl循环语句格式:
until CONDITION; do
循环体
循环控制变量的修正表达式
done
进入条件:当CONDITION为“假”时
退出条件:当CONDITION为“真”时
示例:求100以内所有正整数之和
4,循环控制(break,continue)
循环控制含义:
# break 命令不执行当前循环体内break下面的语句从当前循环退出.
# continue 命令是程序在本循体内忽略下面的语句,从循环头开始执行
break [n]:提前结束循环;[n]表示跳出(结束)几层循环
continue [n]:提前结束本轮循环,而直接进入下一轮;[n]继续循环进入第几轮
循环控制的使用:
while循环:
while CONDITION; do
.......
if CONDITION2; then
break [n]
fi
done
while CONDITION; do
......
if CONDITION2; then
continue [n]
fi
......
done
示例:求100以内所有偶数之和;continue使用
死循环:
while true; do
循环体
if CONDTION; then
break
fi
done
until false; do
循环体
if CONDITION; then
break
fi
done
示例:每隔3秒钟查看当前系统上是否有名为“gentoo”的用户登录;
如果某次查看gentoo登录了,则显示gentoo已经登录;
如果未登录,就显示仍然未来,并显示这是已经是第多少次查看了;
注意break使用
while使用break
until使用break
5,函数的使用
函数使用:
function: 功能
把一段具有独立功能代码封装在一起,并给予命名;后续用到时,可直接通过给定函数名来
调用整体代码;
函数作用:代码重用;模块化编程;
函数的使用方法:
先定义:编写函数代码
后调用:给出函数名,还可按需传递参数
定义方法:
(1) function f_name {
函数体
}
(2) f_name() {
函数体
}
调用函数:
f_name [argu1, argu2, ...]
自定义函数状态返回值:
return [#]
0: 成功
1-255:失败
注意:函数代码执行时,一旦遇到return,函数代码终止运行,函数返回;
示例:执行start,stop,restart分别实现文件状态判断:
将start,stop,restart做为函数体,case使用模块调用函数。
#!/bin/bash # prog=$(basename $0) lockfile="/var/lock/subsys/$prog" #echo $lockfile if [ $# -lt 1 ]; then echo "Usage: $prog start|stop|restart|status" exit 1 fi start() { if [ -f $lockfile ]; then echo "$prog is started yet." else touch $lockfile && echo "Starting $prog ok..." || echo "Starting $prog failed..." fi } stop() { if [ -f $lockfile ]; then rm -f $lockfile && echo "Stop $prog ok...." || echo "Stop $prog failed..." else echo "$prog is stopped yet." fi } restart() { if [ -f $lockfile ]; then rm -f $lockfile && touch $lockfile && echo "Restarting $porg ok..." else touch $lockfile && echo "$prog is stopped, Starting $prog ok...." fi } status() { if [ -f $lockfile ]; then echo "Running..." else echo "Stopped..." fi } case $1 in start) start ;; stop) stop ;; restart) restart ;; status) status ;; *) echo "Usage: $prog start|stop|restart|sttus" exit 1 esac [root@os01 /]# ./test.sh start Starting test.sh ok... [root@os01 /]# cd /var/lock/subsys/ [root@os01 subsys]# ls network test.sh #start创建了test.sh文件 [root@os01 subsys]# cd - [root@os01 /]# ./test.sh stop [root@os01 /]# cd - [root@os01 subsys]# ls network #stop删除了test.sh文件 [root@os01 subsys]# cd - [root@os01 /]# ./test.sh restart [root@os01 /]# cd - [root@os01 subsys]# ls network test.sh #restart执行了先删除再创建test.sh文件
函数模块化调用
模块化编程
功能:把脚本文件中的代码分隔为多段,放在不同的文件中
假设/root/bin/srv目录有两个文件:
(1) 函数文件
(2) 脚本文件
为脚本使用配置文件
一个文件中只定义变量
脚本文件source此变量定义的文件
变量的作用域:
局部变量:
local VARIABLE=value
存活时间:
函数执行开始,至函数返回结束;
示例:test01.sh函数定义变量,test02.sh脚本引用test01.sh
标签:linux 循环控制
原文地址:http://disheng.blog.51cto.com/2821957/1695632