继续Shell的学习。上两篇是关于基本数据类型,基本语法以及运算符相关,这一篇是流程控制相关(if, for, while)

流程控制

if else

流程控制不可为空,如果else没有语句执行,就不要写else

if:

if condition

then

    command1

    command2

    ...

    commandN

fi

if else:

if condition

then

    command1

    command2

    ...

    conditionN

else

    command

fi

if else-if else:

if condition1

then

    command1

elif condition2

then

    command2

else

    commandN

fi

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

num1=$[*]

num2=$[+]

if test $[num1] -eq $[num2]

then

    echo '两个数字相等'

else

    echo '两个数字不等'

fi

for循环

for循环常用格式

for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done

还可以写成一行的形式

for var in item1 item2 ... itemN; do command1; command2... done

in列表可以包含替换、字符串和文件名

for loop in     5 # 顺序输出列表中所有数字
do
echo "The value is: $loop"
done
for str in 'This is a string' # 顺序输出字符串中所有字符
do
echo $str
done

while

condition通常为测试条件。格式如下

while condition
do
command
done

let命令:执行一个或多个表达式,变量计算中不需要加$表示变量

#!/bin/bash
int=
while(( $int<=))
do
echo $int
let "int++"
done

读取键盘输入

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的网站名:'
while read FILM
do
echo "是的!$FILM是一个好网站"
done

无限循环

while:
do
command
done

或者

while true
do
command
done

或者

for (( ; ; ))

until循环

until循环执行一系列命令直至条件为true为止

一般while循环优于until循环

until condition
do
command
done

一个实例

#!/bin/bash

a=

until [ ! $a -lt  ]
do
echo $a
a=`expr $a + `
done

case

多选择语句,匹配一个值一个模式

每个模式名用右括号结束

一旦模式匹配到其中一个,执行完匹配到的模式的所有命令后不再继续执行其他模式

如果没有匹配到任何模式,使用星号*捕获这个值,再执行后面的命令

case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
*)
command1
command2
...
commandN
;;
esac # 就是case反过来写

跳出循环

break

continue

跟其他语言的break continue用法相同

Shell脚本学习 - 流程控制和函数的更多相关文章

  1. shell脚本之流程控制

      shell脚本之流程控制 shell脚本之流程控制 条件语句 条件判断 循环语句for,while,until for循环 while循环 until循环 循环控制语句continue 循环控制语 ...

  2. shell脚本 3 流程控制

    shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介 ...

  3. Shell脚本之流程控制(if、for、while)

    if 判断 if语句的三种格式: (1)if (2)if else (3)if elif else 语法格式如下: #if 语法格式 if 条件 then 命令1... 命令2... fi #if e ...

  4. shell脚本(10)-流程控制while

    一.while循环介绍 while循环与for一样,一般不知道循环次数使用for,不知道循环的次数时推荐使用while 二.while语法 while [ condition ] #条件为真才会循环, ...

  5. shell脚本(11)-流程控制case

    一.case介绍 生产环境下,遇到要根据不同的状况执行不同的预案的情况,首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案 特点:根据给予的不同的代码块 二.case语法 case 变 ...

  6. 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

  7. Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)

    I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量                env:环境变量 常用系统变量: path pwd lang home his ...

  8. Go语言学习之3 流程控制、函数

    主要内容: 1. strings和strconv使用2. Go中的时间和日期类型3. 指针类型4. 流程控制5. 函数详解 1. strings和strconv使用 //strings . strin ...

  9. linux下shell脚本学习

    在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集,而且是一门非常棒的编程语言.您可以通过使用shell使大量的任务自动化,shel ...

随机推荐

  1. Jupyter Notebook 的安装使用以及 tree 路径变更

    由于最近开始学习 Python,进而接触到一个十分强大的交互式编辑器 — Jupyter Notebook,用起来也非常顺手,于是记录一下相关的使用过程. 一.安装 Python: ①首先前往 pyt ...

  2. ArcGIS——使用符号级别区分重叠的面图层

    1.有这样一个面图层shp文件(区域相重叠),需要做出如下右图的效果: 2.导入shp文件后,右键shp文件,属性->符号系统 3.高级->符号级别 将面积最大的图层的级别设为最小,面积最 ...

  3. Aras简单报表

    1.编辑Report对象类的窗体Report_Tab_Report,将xsl_stylesheet放到窗体上 2.新建报表 3.将编辑好的XSLT复制到xsl_stylesheet中. <xsl ...

  4. win 域

    域/AD域/域环境: 1.域:Domain 2.微软技术:1)工作组:平等             2)域 3.主要优点:集中管理/统一管理 4.域成员:1)域控制器:DC           2)成 ...

  5. thinkphp5+vue+iview商城 公众号+小程序更新版本

    thinkphp5+vue+iview商城加分销 源码下载地址:http://github.crmeb.net/u/crmeb 演示站后台:http://demo25.crmeb.net 账号:dem ...

  6. PhpStorm常用快捷键以及如何连接外部服务器

    PhpStorm常用快捷键以及如何连接外部服务器 PhpStorm作为我们phper使用的一款IDE,其功能是非常强大的,现在记录下常用的快捷键以及如何使用它与外部服务器进行连接使用. 一.Keyma ...

  7. Ueditor增加文字竖排显示和从右向左输入(支持蒙古文和维吾尔文)

    平时我们在ueditor中都是输入的中文,排版都是从左向右输入.但是当输入一些少数民民族言时,ueditor却不能正常显示. 例如蒙古文字,传统蒙文是竖排书写.如下图:传统蒙古文排文方式,<蒙古 ...

  8. NB-IoT有三种部署方式及特点【转】

    转自:http://blog.sina.com.cn/s/blog_13ddf053f0102wcbz.html NB-IoT有三种运营模式,一种是独立的在运营商的网络外面重做:第二种是在LTE的保护 ...

  9. Django_路由详

    动态路由和动态参数捕获 动态路由:url支持正则表达式, 访问的url能够匹配成功就去执行对应的视图函数 捕获参数: # 捕获参数,位置传参 url(r'^data/([0-9]{4})/([0-2] ...

  10. 【medium】990. Satisfiability of Equality Equations 并查集

    Given an array equations of strings that represent relationships between variables, each string equa ...