Shell if else语句

if 语句通过关系运算符判断表达式的真假来决定执行哪个分支。Shell 有三种 if ... else 语句:

  • if ... fi 语句;
  • if ... else ... fi 语句;
  • if ... elif ... else ... fi 语句。

1) if ... else 语句

if ... else 语句的语法:

if [ expression ]
thenStatement(s) to be executed if expression is true
fi

如果 expression 返回 true,then 后边的语句将会被执行;如果返回 false,不会执行任何语句。

最后必须以 fi 来结尾闭合 if,fi 就是 if 倒过来拼写,后面也会遇见。

注意:expression 和方括号([ ])之间必须有空格,否则会有语法错误。

举个例子:

  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6. echo "a is equal to b"
  7. fi
  8. if [ $a != $b ]
  9. then
  10. echo "a is not equal to b"
  11. fi

运行结果:

a is not equal to b

2) if ... else ... fi 语句

if ... else ... fi 语句的语法:

if [ expression ]
thenStatement(s) to be executed if expression is true
elseStatement(s) to be executed if expression is not true
fi

如果 expression 返回 true,那么 then 后边的语句将会被执行;否则,执行 else 后边的语句。

举个例子:

  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6. echo "a is equal to b"
  7. else
  8. echo "a is not equal to b"
  9. fi

执行结果:

a is not equal to b

3) if ... elif ... fi 语句

if ... elif ... fi 语句可以对多个条件进行判断,语法为:

if [ expression 1 ]
thenStatement(s) to be executed if expression 1 is true
elif [ expression 2 ]
thenStatement(s) to be executed if expression 2 is true
elif [ expression 3 ]
thenStatement(s) to be executed if expression 3 is true
elseStatement(s) to be executed if no expression is true
fi

哪一个 expression 的值为 true,就执行哪个 expression 后面的语句;如果都为 false,那么不执行任何语句。

举个例子:

  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6. echo "a is equal to b"
  7. elif [ $a -gt $b ]
  8. then
  9. echo "a is greater than b"
  10. elif [ $a -lt $b ]
  11. then
  12. echo "a is less than b"
  13. else
  14. echo "None of the condition met"
  15. fi

运行结果:

a is less than b


if ... else 语句也可以写成一行,以命令的方式来运行,像这样:

  1. if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;


if ... else 语句也经常与 test 命令结合使用,如下所示:

  1. num1=$[2*3]
  2. num2=$[1+5]
  3. if test $[num1] -eq $[num2]
  4. then
  5. echo 'The two numbers are equal!'
  6. else
  7. echo 'The two numbers are not equal!'
  8. fi

输出:

The two numbers are equal!

test 命令用于检查某个条件是否成立,与方括号([ ])类似。

转载于:https://www.cnblogs.com/yang-hao/p/5969252.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

过滤日志中不相关的堆栈跟踪行

我喜欢堆栈痕迹。 不是因为我喜欢错误,而是因为发生错误的那一刻,堆栈跟踪是无价的信息源。 例如,在Web应用程序中,堆栈跟踪向您显示完整的请求处理路径,从HTTP套接字到过滤器,Servlet,控制器&a…

Can't create/write to file '/tmp/#sql_887d_0.MYD' (Errcode: 17)

lsof |grep "#sql_887d_0.MYD" 如果没有被占用就可以删掉 。 https://wordpress.org/support/topic/cant-createwrite-to-file-error Hello, just today I saw this kind of error on every page on my blog. WordPress database error: [Cant create/write to file …

python3怎么创建文件_Python3.5 创建文件的简单实例

实例如下所示:#codingutf-8Created on 2012-5-29author: xiaochouimport osimport timedef nsfile(s):The number of new expected documents#判断文件夹是否存在,如果不存在则创建b os.path.exists("E:\\testFile\\")if b:print("File …

Dijkstra 最短路算法(只能计算出一条最短路径,所有路径用dfs)

上周我们介绍了神奇的只有五行的 Floyd 最短路算法,它可以方便的求得任意两点的最短路径,这称为“多源最短路”。本周来来介绍指定一个点(源点)到其余各个顶点的最短路径,也叫做“单源最短路径”。例如求下图中的 1 号…

JavaScript学习随记——错误类型

错误类型: 执行代码期间可能会发生的错误有多种类型。每种错误都有对应的错误类型,而当错误发生时,就会抛出相应类型的错误对象。 ECMA-262定义的7种错误类型 Error: 是错误的基类型,其他错误类型都继承该类型。Error…

多个集合中的共同和独特元素

本周,我们将暂时中断较高级别的问题和技术文章,以解决我们中许多人可能面临的一些代码问题。 没什么花哨的或太辛苦的,但是有一天它可能会节省您15分钟的时间,偶尔回到基础上也很不错。 因此,让我们开始吧。 有时&…

2016给自己一个交代

一、前言 在关于技术上的学习,常常有这样那样的计划,而最终一个都没有真正的落实。零散的学习,终究需要系统总结,才能使自己有所沉淀。从毕业至今,我一直在忙碌,为公司付出自己的很多很多,却只不…

洛克人红色思考型机器人叫什么_稻船敬二新企划《红色灰烬》 依然是机器人风格...

稻船敬二离开CAPCOM之后玩家们纷纷感叹《洛克人》系列将再无续作,不过在单飞的这段时间里,稻船敬二还是创作了诸如《苍蓝雷霆 刚巴尔特》《Mighty No.9》等类似洛克人风格的作品。其名下的团队comcept的最新作《Mighty No.9》即将于9月18日发售&#xff…

常见对话框

(1)普通对话框 // 点击按钮 弹出一个普通对话框public void click1(View v) {// 构建AlertDialogAlertDialog.Builder builder new Builder(this);builder.setTitle("警告");builder.setMessage("世界上最遥远的距离是没有网络");builder.setPositiveButt…

JavaScript学习随记——面向对象编程(继承)

Example:基于原型链的继承 <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>面向对象编程&#xff08;OOP&#xff09;</title></head> <body>…

NSCharacterSet

先上个例子&#xff1a; NSString * str1 [nameInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; NSString * str2 [passwdInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; […

Apache Mahout:构建垃圾邮件过滤器服务器

Lucene发生了一些相当有趣的事情。 它最初是作为一个库&#xff0c;然后其开发人员开始基于它添加新项目。 他们开发了另一个开源项目&#xff0c;该项目将向Lucene添加爬网功能&#xff08;以及其他功能&#xff09;。 Nutch实际上是任何人都可以使用或修改的功能齐全的Web Se…

建模步骤_古建设计 | sketchup建模步骤教程(简易入门版)

前言本篇教程主要是针对古建建模入门者。小N给大家分享一套我相对简易的建模步骤。(PS&#xff1a;但是估计有些人可能会感觉我做的东西已经繁琐了……)因为主要是为了让大家熟悉、入门和好记忆。所以讲的东西&#xff0c;小N我会相对简单&#xff0c;有些细节的内容不会更多展…

JavaScript模块化

JavaScript模块化的实现方式&#xff1a; <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>模块化</title></head> <body><script type&quo…

Linux下面的IO模型

1. Linux下的五种I/O模型 阻塞I/O模型&#xff1a; 一直阻塞 应用程序调用一个IO函数&#xff0c;导致应用程序阻塞&#xff0c;等待数据准备好。 如果数据没有准备好&#xff0c;一直等待….数据准备好了&#xff0c;从内核拷贝到用户空间,IO函数返回成功指示。 我们 第一…

改变导航栏上边的状态栏颜色

#pragma mark - 改变状态栏颜色 -(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; }转载于:https://www.cnblogs.com/block123/p/5195203.html

PIT和TestNG突变测试简介

变异测试是一种技术&#xff0c;它可以发现测试未涵盖代码的哪些部分。 它类似于代码覆盖范围 &#xff0c;但变异测试不限于在测试期间执行给定行的事实。 这个想法是修改生产代码&#xff08;引入突变&#xff09;&#xff0c;这应该改变其行为&#xff08;产生不同的结果&am…

JavaScript内存管理——优化内存占用

使用具备垃圾收集机制的语言编写程序&#xff0c;开发人员一般不必操心内存管理的问题。但是&#xff0c;JavaScript在进行内存管理及垃圾收集时面临的问题还是有点与众不同。其中最主要的一个问题&#xff0c;就是分配给Web浏览器的可用内存数量通常要比分配给桌面应用程序的少…

Java 8的烹调方式– Lambda项目

什么是project lambda &#xff1a;Project lambda是用于以Java语言语法启用lambda表达式的项目。 Lambda表达式是功能编程语言&#xff08;如lisp&#xff09;中的主要语法。 Groovy将是支持lambda表达式&#xff08;也称为闭包&#xff09;的java的最接近亲戚。 那么什么是la…

ffmpeg文档38-视频源

38 视频源 下面是当前有效的视频源 buffer 缓冲视频帧&#xff0c;其可以作为滤镜链图的环节 它通常用于编程&#xff0c;特别是通过libavfilter/vsrc_buffer.h的接口。 接受如下参数&#xff1a; video_size 指定视频尺寸&#xff0c;(同时指定width 和 height)。语法同于ffmp…