Shell脚本语法--if/then/elif/else/fi

和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的  www.2cto.com

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

其实是三条命令,if [ -f ~/.bashrc ]是第一条,then . ~/.bashrc是第二条,fi是第三条。如果两条命令写在同一行则需要用;号隔开,一行只写一条命令就不需要写;号了,另外,then后面有换行,但这条命令没写完,Shell会自动续行,把下一行接在then后面当作一条命令处理。和[命令一样,要注意命令和各参数之间必须用空格隔开。if命令的参数组成一条子命令,如果该子命令的Exit Status为0(表示真),则执行then后面的子命令,如果Exit Status非0(表示假),则执行elif、else或者fi后面的子命令。if后面的子命令通常是测试命令,但也可以是其它命令。Shell脚本没有{}括号,所以用fi表示if语句块的结束。见下例:

#! /bin/sh

if [ -f /bin/bash ]

then echo "/bin/bash is a file"

else echo "/bin/bash is NOT a file"

fi

if :; then echo "always true"; fi

:是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真。此外,也可以执行/bin/true或/bin/false得到真或假的Exit Status。再看一个例子:

#! /bin/sh

echo "Is it morning? Please answer yes or no."

read YES_OR_NO

if [ "$YES_OR_NO" = "yes" ]; then

echo "Good morning!"

elif [ "$YES_OR_NO" = "no" ]; then

echo "Good afternoon!"

else

echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."

exit 1

fi

exit 0

上例中的read命令的作用是等待用户输入一行字符串,将该字符串存到一个Shell变量中。

此外,Shell还提供了&&和||语法,和C语言类似,具有Short-circuit特性,很多Shell脚本喜欢写成这样:

test "$(whoami)" != 'root' && (echo you are using a non-privileged account; exit 1)

&&相当于“if...then...”,而||相当于“if not...then...”。&&和||用于连接两个命令,而上面讲的-a和-o仅用于在测试表达式中连接两个测试条件,要注意它们的区别,例如,

test "$VAR" -gt 1 -a "$VAR" -lt 3

和以下写法是等价的

test "$VAR" -gt 1 && test "$VAR" -lt 3

ubuntu中的fi语法_Shell脚本语法--if/then/elif/else/fi相关推荐

  1. shell脚本中数组的使用_Shell脚本中的数组

    shell脚本中数组的使用 Knowing how to work with arrays in shell scripts will help you work with larger datase ...

  2. python中until的用法_Shell脚本中循环语句for,while,until用法

    循环语句: Bash Shell中主要提供了三种循环方式:for.while和until. 一.for循环 for循环的运作方式,是讲串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区 ...

  3. Ubuntu中zabbix4.2配置shell脚本邮件报警

    下面我直接描述邮件发送成功的经过: 1.安装heirloom-mailx apt install heirloom-mailx Ubuntu16.04 ,配置文件为/etc/s-nail.rc,把下面 ...

  4. python中的美元符号_Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍...

    Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示 ...

  5. linux中的sh脚本语法

    linux中的sh脚本语法 玩linux都知道sh脚本的方便,但如何编写sh脚本却是像我这样的新手和菜鸟的难题.能不能编写得出来是一回事,了不了解又是另一回事.抱着好好学习,天天向上的精神,大家有空就 ...

  6. Linux中srch出现bash,ultraedit中shell脚本语法着色

    ultraedit中shell脚本语法着色 点击菜单"高级"-"配置",打开配置对话框.在导航一栏,点击"编辑器显示"----"语 ...

  7. Linux中shell语法和脚本编写

    Linux中shell语法和脚本编写 原文地址:学习shell的语法,及脚本编写 其它相关辅助资料: 编写shell脚本所需的语法和示例 基础linux指令&简单的shell语法和脚本编写 什 ...

  8. VS集成环境中的JavaScript脚本语法检查

    集成在Visual Studio环境中的JavaScript脚本语法检查. 1.可以直接检验js文件,也可以检验html和aspx页面上的脚本语法. 2.集成环境中直接使用,双击定位到语法错误处. 3 ...

  9. Shell 脚本语法

    条件测试:test  和  [ 命令 test 或 [ 可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C ...

最新文章

  1. python恶搞小程序-知道了这个,你也能写出 Python 趣味小程序
  2. 只读账号设置-db_datareader
  3. 修改VMOS2的SID 并成为成员服务器,求助SAS9.4服务器版的sid!!!急急!
  4. oracle在数据表中获取年月日时分秒
  5. Linux下程序报出/bin/bash: No such file or directory
  6. Linux 帐户管理
  7. 后端技术:命名不规范,lombok泪两行!
  8. Python+Flask.0010.FLASK即插视图之自定义视图类及修饰器
  9. cassandra入门
  10. android视频录制(调用系统视频录制),生成缩略图
  11. linux java运行class文件_jvm学习java文件运行过程
  12. 【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
  13. python清空文本框内容_js清空文本框
  14. 【NLP】语料库和词汇知识库
  15. centos下安装xcrysden出现的问题
  16. 海德上位机软件学习总结(NetScada5.0)
  17. python-LASSO回归模型
  18. webpack 3/4踩坑,我太难了,从安装、卸载、到使用,各相应的版本号,sass-loader报错-版本的原因,webpack -v 不识别,没卸载干净...
  19. 牛啊!2小时复现顶会论文,他的秘诀是——
  20. win10遇见的问题

热门文章

  1. 最简单的视音频播放示例9:SDL2播放PCM
  2. SharePoint 2010应用开发系列
  3. 在查询语句中使用 NOLOCK 和 READPAST
  4. javaweb学习总结(四十三)——Filter高级开发
  5. 如何在多台web服务器上共享session?
  6. 有用过PHP SPL的吗,不知道这主要用来干嘛
  7. linux cmake 安装mysql5.5.11,以及更高版本
  8. Sublime Text 全程指引 by Lucida
  9. PHP的内存与CPU获取
  10. 金士顿u盘分区工具_使用U盘工具给电脑硬盘快速分区教程