条件

if-then-elif-then-fi

if的条件部分经常使用test EXPRESSION[ EXPRESSION ]实现,test的用法可以参见test

  1. if 条件1 #if 条件1;then
  2. then
  3. 执行语句1
  4. elif 条件2 #elif 条件2;then
  5. then
  6. 执行语句2
  7. else
  8. 执行语句3
  9. fi #条件结束标识,即将if反过来

举个栗子

  1. #!/bin/sh
  2. var="a test string"
  3. if [ '$var' = 'a test string' ];then #重要的事情:1.[ ]里的表达式两边各有一个空格,=两边也各有一个空格。2. 字符串比较可以使用=或==
  4. echo 'We find $var'
  5. else
  6. echo 'We do not know the value of $var'
  7. fi

输出结果:

  1. $ ./shell_if.sh
  2. We find $var

选择

case-esac

case适合处理多个分支的情况

  1. case $var in
  2. 模式1)
  3. 执行语句1
  4. ;;
  5. 模式2)
  6. 执行语句2
  7. ;;
  8. *) #其他情况
  9. 执行语句3
  10. esac #就是case反过来

举个栗子:

  1. #!/bin/sh
  2. var=4
  3. case $var in
  4. [a-z]|[A-Z]) #表示a-z或A-Z
  5. echo "This is a letter"
  6. ;;
  7. [0-9])
  8. echo "This a number"
  9. ;;
  10. 1[0-9]) #表示10到19的数字,不能写[10-19]
  11. echo "This is a number between 10 and 19"
  12. ;;
  13. *)
  14. echo "This is neither a letter nor a number"
  15. ;;
  16. esac

执行结果:

  1. $ ./Shell_case.sh
  2. This a number

循环

while-do-done

条件满足就执行循环体

  1. while 条件
  2. do
  3. 循环体
  4. done

until-do-done

不断执行循环体直到条件得到满足

  1. until 条件
  2. do
  3. 循环体
  4. continue
  5. break
  6. done

for-do-done

每次循环var都取一个cand的值并执行循环体,循环的执行次数取决于单词表的个数,for会隐含的对变量进行逐个单词的赋值,所以不是用的$var,而是var

  1. for var in cand1 cand2 cand3...
  2. do
  3. 循环体
  4. continue
  5. break
  6. done

shell script也接受类C的for循环写法

  1. for ((i=0;i<6;i++)){
  2. 循环体
  3. continue
  4. break
  5. }

函数

和其他语言一样,shell脚本的函数也是对功能代码块的封装

定义

ATTENTION:shell函数的定义中的()只是表示这是一个函数的定义,里面不放任何参数

  1. #定义一个函数
  2. fcn_name (){
  3. ...
  4. echo $1
  5. return $A
  6. }

调用

使用函数的时候只要直接使用函数名即可

  1. #无参数
  2. fcn
  1. #有参数
  2. fcn para1 para2
  1. #有返回值
  2. fcn para1 para2
  3. ret=$?

shell流程控制&函数的更多相关文章

  1. Shell 流程控制-if for case while until break continue

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { ...

  2. 九、Shell 流程控制

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { ...

  3. golang(3):strings和strconv使用 & 时间和日期类型 & 指针类型 & 流程控制 & 函数

    strings和strconv使用 . strings.HasPrefix(s string, prefix string) bool: // 判断字符串s是否以prefix开头 . . string ...

  4. 吴裕雄--天生自然ShellX学习笔记:Shell 流程控制

    和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search(q); ...

  5. 『忘了再学』Shell流程控制 — 33、if条件判断语句(一)

    目录 1.单分支if条件语句 2.双分支if条件语句 (1)示例1 (2)示例2 什么是流程控制? 普通理解:Shell编写的程序是顺序执行的,也就是说第一命令先执行,然后接着执行第二条命令,然后再下 ...

  6. 『忘了再学』Shell流程控制 — 39、特殊流程控制语句

    目录 1.特殊流程控制语句介绍 2.exit语句 3.break语句 4.continue语句 1.特殊流程控制语句介绍 Shell程序或者说其他的程序,都是顺序执行的,也就是第一行执行完再执行第二行 ...

  7. SHELL编程笔记(二)之shell流程控制

    Shell控制流程结构 本章内容有:   退出状态   While.for和until loops循环   If then else语句   脚本中动作   菜单 条件控制语句 If then els ...

  8. linux shell学习之shell流程控制

    在linux shell编程中,流程控制结构与语句,也算是shell脚本中的重点了,不了解的朋友,跟随脚本小编一起来学习下吧. linux控制流结构学习. 一,shell控制流结构 1.控制结构   ...

  9. linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载

    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...

随机推荐

  1. Java面试总结系列之Collections.sort()

    面试中被问到,集合类中的排序方法是怎么实现的?没有回答上来,故而总结如下:你知道么? 前提:在eclipse中对于自己的代码可以通过按住Ctrl的同时单击名称跳入相应源码中.但eclipse默认没有添 ...

  2. [python拾遗]异常处理

    异常 异常(Exception)是因为程序的例外.违例.出错等情况而在正常控制流以外采取的行为,一般分为如下两个阶段: 1.异常发生:一个错误发生后被打印出来,称为未处理异常,而默认的处理则是自动输出 ...

  3. js 的点击事件

    <button id="btn">click</button> var btn=document.getElementById('btn'); 第一种: b ...

  4. bootstrap源码分析之scrollspy(滚动侦听)

    源码文件: Scrollspy.js 实现功能 1.当滚动区域内设置的hashkey距离顶点到有效位置时,就关联设置其导航上的指定项2.导航必须是 .nav > li > a 结构,并且a ...

  5. JavaScript中数组的增删改查

                                               数组的增加 ary.push()   向数组末尾添加元素,返回的是添加后新数组的长度,原有数组改变 ary.uns ...

  6. 10款免费的响应式 WordPress 主题下载

    响应式和现代设计风格的 WordPress 主题与能够非常灵活的适应所有设备.而高级主题能够更大可能性的轻松定制.所有的主题是完全响应式的,您可以从主题选项中禁用/启用响应模式.下面这个列表收集了10 ...

  7. 值得 Web 开发人员收藏的20个 HTML5 实例教程

    当开始学习如何创建 Web 应用程序或网站的时候,最流行的建议之一就是阅读教程,并付诸实践.也有大量的 Web 开发的书,但光有理论没有实际行动是无用的.现在由于网络的发展,我们有很多的工具可以用于创 ...

  8. jQuery原型方法first,last,eq,slice源码分析

    这4个方法中前3个方法很常用大家都见过,但是slice方法可能会以为是数组方法,其实slice也是jQuery的一个原型方法,只不过是底层方法是为其他方法服务的(更具体点是为eq方法服务的),首先还是 ...

  9. CRM 2015 快速抓取表单上字段

    var table='<table><tr><td>序号</td><td>字段名</td><td>Schema名称& ...

  10. 对Xcode菜单选项的详细探索(干货)

    本文调研Xcode的版本是 7.1,基本是探索了菜单的每一个按钮.虽然从xcode4一直用到了xcode7,但是一般都只是用了一些基础的功能,说来也惭愧.在一次偶然的机遇突然发现了“显示调用层级”的选 ...