码迷,mamicode.com
首页 > 其他好文 > 详细

L7.3 循环语句总结

时间:2015-09-17 15:26:14      阅读:262      评论:0      收藏:0      [点我收藏+]

标签: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

技术分享

L7.3 循环语句总结

标签:linux 循环控制

原文地址:http://disheng.blog.51cto.com/2821957/1695632

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!