zoukankan      html  css  js  c++  java
  • Bash-流程控制

    if else 

    和 Java、PHP 等语言不一样,sh 的流程控制不可为空

    在 sh/bash 里可不能这么写,如果 else 分支没有语句执行,就不要写这个 else。

    if-elif-else 语法格式:

    if else 语句经常与 test 命令结合使用

    test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

    for循环

    顺序输出当前列表中的数字:

    顺序输出字符串中的字符:

    while语句

    while 循环用于不断执行一系列命令

    用于从输入文件中读取数据可用于读取键盘信息。

    命令通常为测试条件。

    使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。

    while 循环可用于读取键盘信息。下面的例子中,输入信息被设置为变量 MAN,按 <Ctrl+D> 结束循环。

    运行时候除非ctrl+d,不然会一直while下去。

    Linux read命令用于从标准输入读取数值。read 内部命令被用来从标准输入读取单行数据。这个命令可以用来读取键盘输入,当使用重定向的时候,可以读取文件中的一行数据。

    let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来

    关于echo命令 echo -n 、echo -e

    echo -n 不换行输出

    echo -e 处理特殊字符

    若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: 

        a 发出警告声; 

         删除前一个字符; 

        c 最后不加上换行符号; 

        f 换行但光标仍旧停留在原来的位置; 

        换行且光标移至行首; 

        光标移至行首,但不换行; 

        插入tab; 

        v 与f相同; 

        \ 表示插入""本身;

        nn 插入nnn(八进制)所代表的ASCII字符;

    无限循环

    无限循环语法格式:

     或者把while :改为

    for循环的几个常用写法。

    until 循环

    until 循环执行一系列命令直至条件为真停止。 until 循环与 while 循环在处理方式上刚好相反

    一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。 until 语法格式:

     条件可为任意测试条件.

    测试发生在循环末尾,因此循环至少执行一次。

    case

    Shell case 语句为多选择语句。可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

    • 取值后面必须为单词 in,每一模式必须以右括号结束取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;
    • 取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

    esac

    case 的语法和 C family 语言差别很大,它需要一个 esac(就是 case 反过来)作为结束标记,每个 case 分支用右圆括号,用两个分号表示 break

    下面的脚本提示输入 1 到 4,与每一种模式进行匹配:

    跳出循环

    未达到循环结束条件时强制跳出循环,Shell 使用两个命令来实现该功能:break 和 continue

    break命令

    break 命令允许跳出所有循环(终止执行后面的所有循环)。

    continue命令

     它不会跳出所有循环,仅仅跳出当前循环。当输入大于 5 的数字时,该例中的循环不会结束,语句 echo "haha" 永远不会被执行。

    练习

    echo '' 有换行的意思

    d=$((i+2))必须要双括号,里面i+2上下文才正确。现在i+2结果是一个数值。

    写一个脚本

    (1) 提示用户输入一个字符串;

    (2) 判断:

    如果输入的是 quit,则退出脚本;

    否则,则显示其输入的字符串内容;

    三角输出

    编写 bash 脚本输出如图的三角:

    新建一个 test.sh,判断 8 4 5 三个数字的最大值

    或者

    seq: squeue  是一个序列的缩写,主要用来输出序列化的东西

    seq常见命令参数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    用法:seq [选项]... 尾数
     或:seq [选项]... 首数 尾数
     或:seq [选项]... 首数 增量 尾数
    以指定增量从首数开始打印数字到尾数。
     
      -f, --format=格式     使用printf 样式的浮点格式
      -s, --separator=字符串        使用指定字符串分隔数字(默认使用: )
      -w, --equal-width    在列前添加0 使得宽度相同【自动补位】
          --help            显示此帮助信息并退出
          --version         显示版本信息并退出

    新建 test.sh 求 100 以内所有偶数之和

  • 相关阅读:
    Spring MVC Ajax 嵌套表单数据的提交
    Spring MVC 过滤静态资源访问
    Spring MVC 页面跳转时传递参数
    IDEA Maven 三层架构 2、运行 springMVC
    IDEA Maven 三层架构 1、基本的Archetype 搭建
    EasyUI DataGrid 基于 Ajax 自定义取值(loadData)
    Spring MVC Ajax 复杂参数的批量传递
    Mybatis Sql片段的应用
    在 Tomcat 8 部署多端口项目
    自动升级的设计思路与实现
  • 原文地址:https://www.cnblogs.com/dork/p/13835529.html
Copyright © 2011-2022 走看看