linux流程控制if,for,case,while

 Shell编程中循环命令用于特定条件下决定某些语句重复执行的控制方式,有三种常用的循环语句:for、while和until。while循环和for循环属于“当型循环”,而until属于“直到型循环”。循环控制符:break和continue控制流程转向。

选择执行:
            if COMMADN;then COMMAND;fi   :第一个命令执行成功,就执行第二条命令,否则就退出
多分支:
if  判断条件 1 ; then
      条件为真的分支代码
elif  判断条件 2 ; then
      条件为真的分支代码
elif  判断条件 3 ; then
      条件为真的分支代码
else
      以上条件都为假的分支代码
fi
     逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if

case中的 PAT 支持glob风格的通配符:
             *:  任意长度任意字符
             ?:  任意单个字符
            []:指定范围内的任意单个字符
           a|b: a或b
case 变量引用 in        #变量引用便是方法: $i  就是变量引用的值                  
PAT1)                   #每个分支结束,需要双引号结束
      分支1
      ;;
PAT2)
      分支2
      ;;
      …
)
      默认分支
      ;;
esac

循环执行:      
for  变量名 in 列表;do         #变量名,比如i, 直接是变量i ,而不是$i
     循环体
done
  执行机制 :
          依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

列表生成方式:
(1)  直接给出列表
(2)  整数列表:
      (a) {start..end}     #{1..100}   {1..100..2} {100..1..1}  {100..10..-2}
      (b) $(seq [start [step]] end)  # seq 100   seq 1 2 100  seq 100 -2 1
      使用中括号的列表,步长放在后面
      使用seq命令列表,步长放在中间
(3)  返回列表的 命令
      $(COMMAND)
(4)  使用glob,如:
.sh
(5)  变量引用;
      $@, $*

取随机字符:tr -dc “[:alnum:]” < /dev/urandom |head -c8 |md5sum  表示取几位字符
                                              取随机密码:md5sum
for循环适合使用在关于数字和列表的循环,列表多少就循环多少次
while循环适用于判断命令成功与否;
打印颜色: echo -e “\033[41m  \033[0m”       -e 是使转义符生效
                     设定颜色    结束符
          其中41-45设定背景色,31-35字体颜色

while CONDITION; do
      循环体
done
     CONDITION:循环控制条件;进入循环之前,先做一次判断;每一次循环之后会再
                  判断;条件为“true” ,则执行一次循环;直到条件测试状态为“false” 终止循环
 因此:CONDTION 一般应该有循环控制变量;而此变量的值会在循环体不断地被修正
  进入条件:CONDITION 为true
  退出条件:CONDITION 为false

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

循环控制语句continue

用于循环体中
 continue [N] :提前结束第N 层的本轮循环,而直接进入下一轮判断;最内层为第1层
while CONDTIITON1; do
        CMD1
        …
if CONDITION2; then
        continue
fi
        CMD2
done

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

(0)
sheweishewei
上一篇 2017-03-25 13:12
下一篇 2017-03-25 22:40

相关推荐

  • Linux上文本处理三剑客sed

    Sed是一种在线编辑器,行编辑器,一次处理一行内容,在处理时,把当前处理的行存储在临时缓冲区当中,该缓冲区称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出:然后紧接着去处理下一行,重复完成相同的操作,直至文件末尾;sed处理的整个过程中,对象文件中的内容并没有发生改变,除非使用重定向来存储处理后的结果。sed主要用…

    Linux干货 2016-08-09
  • iptables实验1

    Iptables 实验1 基于状态放行telnet, ftp, ssh, http, samba, icmp等服务; (1) 对本机的ping请求每分钟不得超出20个; (2) 每客户端对本机的ssh的并发连接数不得超过3个; (3) 本机的telnet服务仅允许工作时间内访问; 本机IP地址192.168.42.113 下面我们先放行所有入站状态为ESTA…

    Linux干货 2016-10-24
  • Linux用户和组管理常用命令

    Linux用户和组管理常用命令 1、useradd:创建用户   useradd [options] LOGIN     -u UID: [UID_MIN, UID_MAX]指定uid,(默认500|1000开头)定义在/etc/login.defs     -o 配合-u 选项, 不检查…

    Linux干货 2017-04-04
  • shell编程循环语法作业

    判断/var/目录下所有文件的类型 [root@www sh.log]# cat typefile.sh  #!/bin/bash #author:DYW #显示目录下文件类型 if [ $# -lt 1 ];then echo "Please&nb…

    Linux干货 2016-08-21
  • RHCE系列之备份工具—-镜像备份Rsync

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1431426     我一哥们最近在搞备份,需要用到rsync。因此,鄙人就简单总结了下rsync,也就有了这篇博文,希望对51…

    Linux干货 2016-08-15
  • 简单shell脚本习题

    习题 作业 简单shell脚本习题 习题1 答案 习题2 答案 习题3 答案 习题4 答案 习题5 答案 习题6 答案 习题1 编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本, CPU型号,内存大小,硬盘大小。 答案 #!/bin/bash IPADDR=$(…

    Linux干货 2017-04-10