条件

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. Mysql优化的几点总结

    正常情况下,初创公司的流量并不是很大,mysql数据库在未做优化的情况依然可以满足性能要求,特别是5.6版本后mysql在性能上还是有了很大提升,所以在初期并没有花精力在此上面.但后来发生的一系列问题 ...

  2. ssh架构简单解释和vo po解释

      Struts.spring.Hibernate在各层的作用 1)struts 负责 web层. ActionFormBean 接收网页中表单提交的数据,然后通过Action 进行处理,再Forwa ...

  3. 定时任务服务 CronService使用说明

    CronServiceInstaller.exe  部署安装程序 1.在打开该程序前务必设置为管理员运行 2.点击注册服务 3.检查服务是否开启,点击 services.msc, 打开系统服务列表 4 ...

  4. .Net加密保护工具分析介绍

    本文主要介绍一些dotNet加密保护工具的原理以及就其脱壳进行简单探讨. remotesoft protector.maxtocode..Net Reactor.Cliprotector.themid ...

  5. MyBank(自助银行)系统

    光阴似箭,岁月如梭. 从开始学Java到现在学C#已快四个月了,我们学的东西越来越多了.但是虽说学到现在,都不知道有什么用?没地方表现啊. 那么今天我就来给大家说说说这些东西的用处吧. 就拿MyBan ...

  6. 双重OAuth 2.0架构

    OAuth 2.0支持几种grant type,由于安全性不同,所以适用范围也不同.背景知识:<理解OAuth 2.0> grant type 是否需要secret 是否出现授权界面 授权 ...

  7. 推荐25款实用的 HTML5 前端框架和开发工具【下篇】

    快速,安全,响应式,互动和美丽,这些优点吸引更多的 Web 开发人员使用 HTML5.HTML5 有许多新的特性功能,允许开发人员和设计师创建应用程序和网站,带给用户桌面应用程序的速度,性能和体验. ...

  8. 20款免费的 PSD 网站模板【免费下载】

    如果你的新项目预算很低,那么免费网站模板对你来说是一个很好的解决方案.有很多的预先设计的网站模板 PSD 素材可以使用和自由定制.在这里,你会发现可供下载的超级棒的免费网站模板.你可以使用它们来创建自 ...

  9. 微信中a链接无法进行跳转

    [问题]微信页面开发时,各个主页之间的跳转,完全是通过a链接进行的,但是来回跳转几次,再次从其他主页面跳回首页的时候,微信头部出现了跳转加载进度条,但是就是不跳转,也没有任何反应 [范围]只出现在微信 ...

  10. JavaScript强化教程 - 六步实现贪食蛇

    1.首先创建div 并且给div加样式 <div id="pannel" style="width: 500px;height: 500px;z-index: 1; ...