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

相关推荐

  • httpd服务归纳:httpd基本配置(周边常用工具,httpd 编译安装)

    一、 服务器status页     内生的status信息,可以通过web予以显示, 可以映射为url地址进行访问     1. 配置路径有几种不同方式          如果URL可以映射…

    Linux干货 2015-05-27
  • yum函数介绍以及自建yum仓库

    一、前言     在之前介绍了yum的配置(详细请移步 http://www.178linux.com/archives/6445)。但是有没有发现一个问题,虽然我们已将仓库指向一个可用的仓库服务器,但是随着Linux的不断升级和改版,我们是否还需要不断的去修改仓库的配置文件,如果只有一台还好,那如果我们有多…

    Linux干货 2015-07-24
  • 正则表达式字符集

    POSIX Description ASCII Unicode Shorthand Java [:alnum:] Alphanumeric characters [a–zA–Z0–9] [\p{L}\p{Nl}  \p{Nd}] \p{Alnum} [:alpha:] Alphabetic characters …

    Linux干货 2017-07-07
  • 初学Linux之文件查找和压缩

    使用locate命令 ,使用find命令 ,压缩和解压缩工具

    2018-01-13
  • date用法心得

    Linux时间格式极大程度的遵循了人类习惯,以下为部分常见时间。
    date命令本身提供了日期的加减运算,shell编程时灵活运用

    2017-11-09
  • ☞卸载kernel玩一玩

    卸载kernel玩一玩 废话不多说,下面开始卸载内核这一惊险之旅,特别提醒在开始之前做好虚拟机的快照,也许会造成系统无法启动,也许会出现各种错误,也许会笑着删数据库跑路,也许会从入门到放弃,,请系好安全带。  练习 冒泡排序法 #!/bin/bash##Author:jasonmc#Date:2016-08-24#Description:buble…

    Linux干货 2016-08-26