条件

if-then-elif-then-fi

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

if 条件1        #if 条件1;then
then
执行语句1
elif 条件2 #elif 条件2;then
then
执行语句2
else
执行语句3
fi #条件结束标识,即将if反过来

举个栗子

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

输出结果:

$ ./shell_if.sh
We find $var

选择

case-esac

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

case $var in
模式1)
执行语句1
;;
模式2)
执行语句2
;;
*) #其他情况
执行语句3
esac #就是case反过来

举个栗子:

#!/bin/sh
var=4
case $var in
[a-z]|[A-Z]) #表示a-z或A-Z
echo "This is a letter"
;;
[0-9])
echo "This a number"
;;
1[0-9]) #表示10到19的数字,不能写[10-19]
echo "This is a number between 10 and 19"
;;
*)
echo "This is neither a letter nor a number"
;;
esac

执行结果:

$ ./Shell_case.sh
This a number

循环

while-do-done

条件满足就执行循环体

while 条件
do
循环体
done

until-do-done

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

until 条件
do
循环体
continue
break
done

for-do-done

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

for var in cand1 cand2 cand3...
do
循环体
continue
break
done

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

for ((i=0;i<6;i++)){
循环体
continue
break
}

函数

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

定义

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

#定义一个函数
fcn_name (){
...
echo $1
return $A
}

调用

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

#无参数
fcn
#有参数
fcn para1 para2
#有返回值
fcn para1 para2
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. 第 17 章 CSS 边框与背景[上]

    学习要点: 1.声明边框 2.边框样式 3.圆角边框 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 边框和背景,通过边框和背景的样式设置,给元素增加更丰富的外观. 一.声明边框 边框的声明有 ...

  2. MUI(3)

    本篇博文是继续上篇博文MUI(2).上面这幅图是博文MUI(1)中实现的效果,在博文MUI(1)中提到了2个页面,一个页面是index.html,另一个页面是index_list.html页面.上面这 ...

  3. 2016暑假多校联合---Joint Stacks (STL)

    HDU  5818 Problem Description A stack is a data structure in which all insertions and deletions of e ...

  4. HDU 5792---2016暑假多校联合---World is Exploding

    2016暑假多校联合---World is Exploding Problem Description Given a sequence A with length n,count how many ...

  5. 【Effective Java】6、使用复合优先于使用继承

    这个,不管是什么书都会这样说,因为常常我们并不需要继承,而只是想把类进行一定的扩展,而我们想扩展的属性或方法对应的类都有,这个时候如果两者是is a的关系,这种关系是确实存在的,那么就可以使用继承,不 ...

  6. C#利用SqlDataAdapte对DataTable进行批量数据操作

    C#利用SqlDataAdapte对DataTable进行批量数据操作,可以让我们大大简化操作数据的代码量,我们几乎不需要循环和不关心用户到底是新增还是修改,更不用编写新增和修改以及删除的SQL语句, ...

  7. 开发中可能会用到的几个 jQuery 小提示和技巧

    今天,我们将分享一些很有用的技巧和窍门给 jQuery 开发人员.jQuery 是最好的 JavaScript 库之一,用于简化动画,事件处理,支持 Ajax 和 HTML 的客户端脚本.网络中有大量 ...

  8. pywebsocket的搭建

    Python可以搭建pywebsocket(Web服务器,python websocket),搭建pywebsocket必须要已经安装了python,点我查看python的下载与安装.在这篇Blog中 ...

  9. visual studio 查找/替换对话框

    工具--选项--环境--查找和替换 如下设置: 则会在查找.替换到最后时会弹出提示,比如“查找到达了搜索的起点”,如下图: 原文:http://keleyi.com/a/bjac/27iswh0p.h ...

  10. 最简单的轮播广告(原生JS)

    改变每个图片的opacity属性:来自学友刘斌 素材图片: <!DOCTYPE html> <html lang="en"> <head> &l ...