bash 循环语句for、while、until

循环执行

循环执行
    定义:将某段代码有次数或无次数循环执行多次。
    构成要素:退出条件和进入条件
    循环的三种语句:for、while、until

for循环:

 
    格式
    for 变量 in 列表;do
        循环执行语句
    done
    
    执行机制:
    依次将列表中的元素赋值给“变量名” ; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
  
  列表生成方式:
      1、直接给出生成列表
      2、{1..10} 注意:{1..$变量名}是错误的写法
          `seq start step end`  start:起始值 (可以写可不写)
                                step:步长(可以写可不写)
                                end:终止值,可以 $变量名
     3、返回列表的命令                                                           
        $(common) 例如:`ls /var/*`
     4、使用 glob, 如: *. sh
       5、变量引用;
        $@, $*
    
    for循环类似c++用法
        for ((控制变量初始化;条件判断表达式;控制变量的修正表达式))
        do
            循环体
        done

for循环练习题

   
    1、判断/var/目录下所有文件的类型
    2、 添加10个用户 user1 - user10,密码同用户名
    3、 /etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件;分别读取每个文件,以K开头的文件输出为文件加stop
    ,以S开头的文件输出为文件名加start;
    “ K34filename stop”
    “S66filename start”
    4、写一个脚本,提示输入正整数n的值,计算1+2+3+…n的总和
    5、 打印九九乘法表

    

   
    答案一
        [root@centos7 bin]# cat varfor.sh 
    #!/bin/bash
    for fname in `ls -d /var/*`             注意:ls -d /var/*列出的是文件的绝对路径,如果用ls /var/列出的为相对路径,需要到/var/目录下才能判断
    do
	if [ -h $fname ];then
		echo "file $fname  is symbolic link"
	elif [ -d $fname ];then
		echo "file $fname is dirctor"
	elif [ -f $fname ];then
		echo "file $fname is commom file"
	elif [ -b $fname ];then
		echo "file $fname is a block device "
	else  [ -c $fname ]
		echo "file $fname is a character file"
	fi
    done

    [root@centos7 bin]# 
    
    
    答案:2
    [root@centos7 bin]# cat useraddfor.sh 
    #!/bin/bash
    for username in user{1..10};do
	if id -u $username >/dev/null 2>&1;then
		echo "user exit"
	else 
		useradd $username
		echo "useradd success"
		echo "$username:$username" |chpasswd
	fi
    done
    [root@centos7 bin]# 
    
    答案:3
    
    [root@centos7 bin]# cat   rc3d.sh 
    #!/bin/bash
    for fname in $(ls /etc/rc.d/rc3.d);do
	if	[[ "$fname" =~ ^[kK].* ]];then
		echo "$fname stop"
	elif [[ "$fname" =~ ^[sS].* ]];then
		echo "$fname start"
	fi
    done
    [root@centos7 bin]# 
    
    答案四:
        
        [root@centos7 bin]# cat readnsum.sh 
        #!/bin/bash
        #name:wangnannan
        read -p "please input a inter:" int
        if let $int+0 ;then
	    for i in `seq 1 $int`;do
		let sum+=$i
	    done
        else 
	    echo "you input is not a integer"
    	    exit 22 
        fi
        echo "from 1 to $int sum is :$sum"
        [root@centos7 bin]#
        
        答案5
        [root@centos7 until]# cat chengfabiaofor2.sh 
        #!/bin/bash
        #name:wangnannan
        for ((i=1;i<=9;i++));do
             for((j=1;j<=i;j++));do
              echo -ne "\033[41;41;41;41;32;4m$j*$i=$[j*i]\033[m \t"
             done
             echo
        done
        [root@centos7 until]# 
        
        
        [root@centos7 bin]# cat chengfabiao.sh 
        #!/bin/bash
        for i in {1..9};do
             for j in `seq 1 $i `;do
                  echo -e "$j*$i=$[ $i*$j ] \c "
             done
             echo -e "\n"
        done
        [root@centos7 bin]#

while循环

    
    循环格式
        while 条件;do   
            循环语句
        done
    
    循环机制:
        循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再次做判断;条件为“true”,则执行一次循环;直到条件测试状态为“ false”终止循环
        因此: CONDTION一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
    
    循环要素:
        进入循环:条件为真
        退出循环:条件为假
        
    while循环特殊格式
        while read line;do
            循环体
        done < /path/somefile
        循环机制:依次读取somefile文件中的每一行,将值赋给line 变量

until循环

        until CONDITION; do
            循环体
 done
 进入条件: CONDITION 为false
 退出条件: CONDITION 为true

循环控制语句:

continue:退出当次循环
break:退出整个循环

创建无线循环

while true ;do

    循环语句

done

until false ;do

    循环语句

done

原创文章,作者:wangnannan,如若转载,请注明出处:http://www.178linux.com/37456

(0)
wangnannanwangnannan
上一篇 2016-08-21
下一篇 2016-08-21

相关推荐

  • 软件包管理–rpm、yum

    rpm软件包管理,rpm命令的使用。yum命令使用,yum源的搭建,网络yum源的搭建方法。编译安装http

    Linux干货 2017-12-03
  • RAID常见级别及特性

    磁盘阵列(Redundant Arrays of Independent Disks,RAID),通过软件或者硬件的手段将多个磁盘整合成一个磁盘来使用,以此来提高磁盘的性能,并提供数据冗余的功能。 目前常见的RAID等级: raid0,被称为条带卷。 条带卷,我们可以通过名字来想象:RAID0通过把文件切割之后把数据像一条带子一样平铺在每个磁盘之上。 由于文…

    Linux干货 2016-01-05
  • linux入门第二课

    **linux入门基础** linux 命令类别 内部命令和外部命令 首先我们可以用echo $SHELL 来查询shell 里面会显示我们当前在用的shell 上图是echo $SHELL 也可以用cat /etc/shells来查询系统里面的shell bash其实是一个文件是一个程序 存在于 /bin/bash 目录,这是真是存在的文件,是一个可以执行…

    Linux干货 2017-05-20
  • 我在马哥的学习生涯开始

    我的人生工作目标:年薪百万不是梦!

    Linux干货 2016-10-28
  • Linux介绍

    Linux简介 Linux是一种自由和开放源代码的类UNIX操作系统。该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布。在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。…

    Linux干货 2016-10-28
  • 第一周博客作业

    前言:这几周的课程大部分开班前就掌握了的,这次学的细一点,顺便学一下markdown写博客、排版。内容有部分是前几期学员写的,觉得写得不错,就斗胆截取了,还有部分是自己写的,也有一些是百度到的内容。 目录 一、描述计算机的组成及其功能 二、linux发行版 三、linux哲学思想 四、常用命令 五、如何获取命令的帮助信息 六、linux发行版的基础目录名称命…

    Linux干货 2017-01-09