热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我的shell脚本编程

对于shell脚本编程特点来说它是过程式编程语言、脚本类型语言、解释型语言。在写脚本的时候总是会遵循三种执行结构:顺序执行结构、选择执行结构、循环执行结构。

   对于shell脚本编程特点来说它是

        过程式编程语言、脚本类型语言、解释型语言。

  在写脚本的时候总是会遵循三种执行结构:顺序执行结构、选择执行结构、循环执行结构。

   顺序执行即:以从左到右,从上到下顺序执行所有的语句(命令)

   选择执行结构:依照给定条件的逻辑判断结果或者依照可选的取值范围,进而选择某个分支中的语句来执行;

    有if:分支选择标准;逻辑判断的结果;

     case:分支选择标准;根据可选的取值;

   循环执行结构:对于某特定语句,重复执行0次,1次或多次;

   有for:遍历指定的列表

    while:根据逻辑判断的结果

    until:根据逻辑判断的结果

   select:死循环,利用循环机制提供选择列表

----------------------------------------------------------

  if结构通常来说有双分支和多分支结构

   无非就是在if下又添加了elif  例如

if CONDITION1 ; then

           STATEMENT

           ...

         elif CONDITION2 ; then

           STATEMENT

           ...

         elif CONDITION3 ; then

           STATEMENT

           ...

         ...

         else

           STATEMENT

           ...

         fi

  case 语句使用来 在给出不同的参数时做出不同的结果

    case 变量引用 in 

        模式1)

          分支1

          ;;

        摸式2)

          分支2

          ;;

        ...

        *)

          默认分支

          ;;

      esac

   在这里的模式可有很多种匹配方式

     1.普通的文本字符

     2.globbing风格的通配符

       *:任意长度任意字符

       ?:任意的单个字符

       []:范围内的任意单个字符

       [^]:范围外的任意单个字符

     3.| :或

 for 循环有两种格式

    1.遍历列表

     for VAAR_NAME in LIST ; do 

        循环体

     done

    这个列表LIST的可以:

            1):直接写出

            2): 纯整数列表

              seq:输出一个整数列表

                 seq [FIRST [INCREMENT]] LAST

            3) :花括号展开

                {FIRST..LAST}

                     {0..100..3}  显示0-100中能被3整除的数字

            4) : 命令的执行结果返回值

            5):GLOBBING(通配符)

            6): 某些变量的引用:$@,$*

     2.控制变量的格式  

       for (( 表达式1; 表达式2; 表达式3 )); do 

         ((循环体))

       done

          表达式1:为变量赋初始值

          表达式2:循环的退出条件

          表达式3:变量值的变换规律

  while、until循环:

       while CONDITION ; do

         循环体

       done

        进入循环的条件:CONDITON一直为真;

        退出循环条件:CONDITON为假

        -------------------

       until CONDITION ; do

        循环体

       done

       进入循环的条件:CONDITON一直为假;

        退出循环条件:CONDITON为真

 注意:对于while和until两个循环结构来讲,如果要实施变量增量操作,必须手动给出;

     例如:利用while和until循环结构,计算100以内所有整数和;

     #!/bin/bash

     #

     declare -i I=1

     while [ $I -le 100 ] ; do

      let SUM+=$I

      let I++

     done

对于循环语句 还有一个无限循环的用法

 while true ;do

    循环体

  done


  until false ;do

   循环体

  done


  在此类的循环结构中,必须适当的使用continue和break,以保证循环不会一直持续下去;

   continue:

    continue [n] 

     提前技术第n层的本次循环,直接进入下一轮条件判断,若符合循环进入条件,则开启下一轮循环; 

   break:

    break [n]

    提前结束第n层循环;不再继续后续循环;

  

还有一个实现遍历功能的while、until循环 用于对文件的每一行读取操作

while read LINES ; do

    循环体

  done

until ! read LINES ; do

 循环体

done


select

  select循环主要用于创建一个菜单式列表,供用户进行选择;

  列表是按照数字顺序排列的,我们只要选择数字即可;


  一般来讲,select与case一起使用;


  select是一个无限循环结构,因此,必须在循环体中使用break命令以退出循环,或者可以使用exit命令直接终止脚本。


  select NAME [in 词语 ... ;] do 命令; done


  select NAMl6E [in lsit ] ; do 

     命令 

  done

对于和用户交互式的命令read

   read命令:

    read [-a 数组] [-p 提示符] [-t 超时] [名称 ...]

    名称一般为变量名或数组名;如果不写名称,则系统会将read读到的信息保存在REPLY变量中;


    注意:在使用read命令的时候,通常会使用-t选项来规定超时时间;一旦使用-t选项定义了超时时间,我们必须在后面判断给定的变量是否为空,如果为空需要为变量提供默认值;

  


 取随机数  8以内的

      echo $[$RANDOM%8]



本文出自 “从运维开始” 博客,谢绝转载!


推荐阅读
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Python教学练习二Python1-12练习二一、判断季节用户输入月份,判断这个月是哪个季节?3,4,5月----春 ... [详细]
author-avatar
盲人一块
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有