比较与测试

程序中的流程控制是由比较和测试语句来处理的。

我们可以用if,if else 以及逻辑运算符来执行测试,而用一些比较运算符来比较数据项。另外,有一个test 命令也可以用来进行测试。让我们来看看如何使用这些命令。

实战演练:

if 条件:
if condition;
then
commands;
fi

else if 和 else :
if condition;
then
commands;
elif condition;
then
	commands
else
	commands
fi

if和else语句可以进行嵌套。if的条件判断部分可能会变得很长,但可以用逻辑运算符将它变得简洁一些:

[ condition ] && action; #如果condition为真,则执行action
[ condition ] || action; #如果condition为假,则执行action

&&是逻辑与运算符,||是逻辑或运算符。


算数比较

条件通常被放在封闭的中括号内。一定要注意在[或]与操作数之间是有一个空格的。如果不加,则脚本会报错。例如:

[ $var -eq 0 ] or [ $var -eq 0 ]

对变量值进行算数条件判断:

[ $var -er 0 ] #当$var等于0时,返回真
[ $var -ne 0 ] #当$var为非0时,返回真

其他重要的操作符如下所示:

-gt :大于
-lt :小于
-ge :大于等于
-le :小于等于

字符串比较

使用字符串比较时,最好使用双中括号,因为有时候采用单个中括号会产生错误,所以最好避开它们。

[[ $str1 = $str2 ]] :当str1等于str2时,返回真。也就是说,str1和str2包含的文本是一样的
[[ $str1 ==$str2 ]] :这是检查字符串是否相等的另一种写法
[[ $str1 != $str2 ]] :如果str1和str2不相同,则返回真

我们还可以检查字符串的字母序情况,具体如下所示:

[[ $str1 > $str2 ]] :如果str1的字母序比str2的大,则返回真
[[ $str1 < $str2 ]] :如果str1的字母序比str2的小,则返回真
[[ -z $str1 ]] :如果str1中包含的是空字符串,则返回真
[[ -n $str1 ]] :如果str1中包含的是非空字符串,则返回真


注意:

在 = 号前后各有一个空格。如果忘记加空格,那就不是比较关系了,而变成了赋值语句。

Linux Shell脚本攻略学习总结:二的更多相关文章

  1. linux shell 脚本攻略学习20--awk命令入门详解

    awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...

  2. Linux Shell脚本攻略学习总结:一

    终端打印 终端打印的常用命令有两个:echo和print 首先,我先介绍echo 1.echo echo这个命令接受三种形式的参数,实例如下: echo "Hello World" ...

  3. linux shell 脚本攻略学习19--sed命令详解

    sed(意为流编辑器,英语“stream editor”的缩写)是Unix/linux常见的命令行程序.sed用来把文档或字符串里面的文字经过一系列编辑命令转换为另一种格式输出,即文本替换.sed通常 ...

  4. Linux Shell 脚本攻略学习--四

    linux中(chattr)创建不可修改文件的方法 在常见的linux扩展文件系统中(如ext2.ext3.ext4等),可以将文件设置为不可修改(immutable).某些文件属性可帮助我们将文件设 ...

  5. linux shell 脚本攻略学习12--文件权限详解,chmod命令详解,chown命令详解,chattr命令详解

    文件权限详解 一.chmod命令详解 文件权限和所有权是Unix/Linux文件系统最显著的特征之一.linux中的每一个文件都与多种权限类型相关联,在这些权限中主要分类为3种: 用户(User)是文 ...

  6. linux shell 脚本攻略学习18--grep命令详解

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是unix/linux中用于文本搜索 ...

  7. linux shell 脚本攻略学习16--wc命令详解,tree命令详解

    在文本处理的工作中,统计文件的行数,单词数和字符数非常有用.而对于开发人员本身来说,统计LOC(line of code ,代码行数)是一件重要的工作.linux中有什么命令可以帮助我们做统计呢?没错 ...

  8. linux shell 脚本攻略学习15--如何只列出目录,如何快速切换目录

    工作中经常遇到关于目录方面的问题,例如,如何只列出当前目录下的所有目录,以及如何快速高效的切换目录,而不需要使用鼠标,下面将简单介绍关于这两方面的解决方案: 一.如何只列出目录? 看似简单的任务,其实 ...

  9. linux shell 脚本攻略学习14--head命令详解,tail命令详解

    当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...

随机推荐

  1. kexec 内核快速启动流程分析

    一.命令行 1. kexec -l $kpwd --append="$arg" 其中$kpwd =目标内核的路径 $arg =传给内核的参数,与/proc/cmdline一致时表示 ...

  2. [Gradle系列]Gradle打包apk多版本,多渠道,多环境,多功能,多模块随心所欲

    Tamic: http://blog.csdn.net/sk719887916/article/details/53411771 开始 上篇Gradle发布Module(Maven)到jcenter, ...

  3. Android Multimedia框架总结(二十五)MediaProjection实现手机截屏(无须root)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53966818 前言:一年半多以前 ...

  4. 利用git pull的勾子实现敏捷部署

    监听端 例如nginx或Python,php,rails等后端 git --git-dir=~/op/.git --work-tree=~/op pull git hooks端 位于.git/hook ...

  5. linux C 获取与修改IP地址

    主要有两种方法: 一种是用system执行shell命令,如: system("ifconfig usb0 192.168.1.188"); 另一种用ioctl系统调用: int ...

  6. 热烈庆祝自已厉精13年开发的 DB查询分析器 7.01(最新版本) 在中关村在线本月获得近6000次的下载量

    中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员)推出的个人作品----万能数据库查询分析器,中文版本 DB 查询分析器.英文版本DB Query Analyzer.它 ...

  7. Java中synchronized的使用实例

    一.使用场景 在负责后台开发的时候,很多时候都是提供接口给前端开发人员去调用,会遇到这样的场景: 需要提供一个领奖接口,每个用户名只能领取一次,我们可以将成功领取的用户在数据库用个标记保存起来.如果这 ...

  8. Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug

    最近在做的项目客户用的是CRM2013sp1版本,所以插件注册器使用的也是与之对应的6.1.1.1143,悲剧的事情也因此而开始. 在插件中注册step时,工具里有个run in user's con ...

  9. android 集成微博常见问题

    我们在做微博集成登录.分享.聊天的时候,肯定会遇到很多的坑,这里总结下常见的问题. 文件不存在 C8998 的解决方法 如图我们走微博授权登录的时候如果OAuth2.0 授权设置回调页面设置和本地的不 ...

  10. Android系统开机启动流程及init进程浅析

    Android系统启动概述 Android系统开机流程基于Linux系统,总体可分为三个阶段: Boot Loader引导程序启动Linux内核启动Android系统启动,Launcher/app启动 ...