逻辑值,0为真,非0为假

在shell中,一个逻辑表达式的逻辑值是真是假用0和非0来表示,其中0表示真,非0表示假。
逻辑表达式的逻辑值只能是正数,不能是其他的类型。

测试逻辑表达式的值

在shell中,测试一个逻辑表达式的值有两种方法,一种是使用test命令来测试,另一种是使用中括号[](建议使用中括号)。
1、test expression
2、[ expreesion ]

在第2中结构中,符号[是启动测试命令,要求在expreesion 后面要有一个]与其配对,同时中括号与expreesion 要有空格,最后整个表达式逻辑值0表示真,非0表示假。

演示示例:
test 3 -eq 5 #判断3是否等于5
echo $? #输出结果,为假
1

test 3 -eq 3 #判断3是否等于3
echo $? #输出结果,为真
0

测试文件类型

-e :判断文件或目录是否存在,如:[ -e /etc/passwd ]
-f :判断文件是否存在而且为普通文件,如:[ -f /etc/passwd ]
-d:判断目录是否存在,如:[ -d /etc/ ]
-r :判断文件是否可读, 如:[ -r /etc/passwd ]
-w :判断文件是否可写,如:[ -w /etc/passwd ]
-x :判断文件是否可执行,如:[ -x /etc/passwd ]
-L :判断文件是否是符号链接文件,如:[ -x /etc/passwd ]
-c :判断文件是否是字符文件,如:[ -x /etc/passwd ]
-b :判断文件是否是块文件,如:[ -b /dev/null ]

测试字符串

-z :判断字符变量值是否为空,变量值为空,返回0为true,变量值非空,返回1为false,变量要用双引号括起来,如:[ -z “name"]−n:判断字符变量值是否为空,变量值为空,返回1为false,变量值非空,返回0为true,变量要用双引号括起来,如:[−n"name" ] -n :判断字符变量值是否为空,变量值为空,返回1为false,变量值非空,返回0为true,变量要用双引号括起来,如:[ -n "name"]−n:判断字符变量值是否为空,变量值为空,返回1为false,变量值非空,返回0为true,变量要用双引号括起来,如:[−n"name” ]
string1 = string2 :测试两个字符串是否相等,注意等号两边有空格,如:[ “hhjshds” = “sdswd”]、[ “string1"="string1" = "string1"="string2”]
string1 != string2 :测试两个字符串不相等,注意等号两边有空格,如:[ “hhjshds” != “sdswd”]、[ “string1"!="string1" != "string1"!="string2”]

测试数值

-eq :Equal, 相等, 如 [ num1 -eq num2 ]
-ne :Not Equal , 不相等, 如 [ num1 -ne num2 ]
-lt :Lesser Than, 小于, 如 [ num1 -lt num2 ]
-le :Lesser or Equal, 小于等于, 如 [ num1 -le num2 ]
-gt :Greater Than, 大于, 如 [ num1 -gt num2 ]
-ge :Greater or Equal, 大于等于, 如 [ num1 -ge num2 ]

(大于符号>、小于符号<)

逻辑运算符

-a :与的关系,两个expression同时为真则表达式为真,如 [ expression1 -a expression2 ]
-o :或的关系,两个expression有一个为真则表达式为真,如 [ expression1 -o expression2 ]
!:取反,expression若为真,则整个表达式为假,expression若为假,则整个表达式为真,如 [ !expression ]

分号;

Linux中分号表示一条命令的结束,默认回车符也是一条命令的结束,如下:
[root@localhost~]# ls -al ;echo “I am good boy” #使用了符号,当然如果你想连接两条命令还可以使用&&符号

if语句结构

结构1、
if [ expreesion ]
then
commands

elif [ expreesion ]
then
command

else
commands

fi

为了美观,我还可以把then放在与if同一行,但要加分行,如下:
结构2、
if [ expreesion ] ;then
commands

elif [ expreesion ] ;then
command

else
commands

fi

小结:elif语句和else语句不是必须的;if语句是可以嵌套的,即在任何位置都可以再嵌套一个if语句;if语句结尾要用fi来表示结束。

if语句的执行顺序

先判断第一个if 表达式的逻辑值,如果为true,则执行对应的commands后直接结束整个if语句,如果为false,则继续判断elif 语句,遇到elif 语句表达式为true的就进入执行对应的commands,执行完就结束掉整个if语句,如果elif 语句表达式都判断完了也没有true的,则就执行else语句对应的commands,然后就结束整个语句了。

演示示例:
if [ -f /etc/passwd ];then
ehco “这是一个密码文件”
else
echo "糟了,文件不存在’

#!/bin/bash
read -p “请输入一个整数:” num
if [ $num -ge 80 -a num−le100];thenecho"这个数大于或等于80,小于或等于100."echo"是的,这个数是:num -le 100 ];then echo "这个数大于或等于80,小于或等于100." echo "是的,这个数是:num−le100];thenecho"这个数大于或等于80,小于或等于100."echo"是的,这个数是:{num}"
elif [ $num -ge 50 -a num−le100];thenecho"这个数大于或等于50,小于或等于79."echo"是的,这个数是:num -le 100 ];then echo "这个数大于或等于50,小于或等于79." echo "是的,这个数是:num−le100];thenecho"这个数大于或等于50,小于或等于79."echo"是的,这个数是:{num}"
elif [ num−le49];thenecho"这个数小于或等于49."echo"是的,这个数是:num -le 49 ];then echo "这个数小于或等于49." echo "是的,这个数是:num−le49];thenecho"这个数小于或等于49."echo"是的,这个数是:{num}"
else
echo “这个数大于100”
echo “这个数是:${num}”
fi

if语句、逻辑表达式、运算符相关推荐

  1. C#学习笔记(二)运算符 乘方 判断语句 循环语句 比较运算符 逻辑运算符 数组...

    第七节 %求余 ^乘方 第八节 运算符的简化 自增 自减 x++ ++x 放空- 第九节 乘方 ^符号的错误 没有\这个符号 第十节 判断语句 if else 语句 if(){} else if(){ ...

  2. java块语句_Java运算符、表达式、语句块

    一.运算符 在java中用于程序计算的操作i发统称为运算符,运算符分为如下几类: 1.算术运算符 算术运算符 说明 + 加号两边是数值,可以运算,如果一边存在字符串,则当作连接符 a+b - 两个数相 ...

  3. [Java]介绍|环境|编码|数据类型|String|运算符|标准输入|if语句|循环语句|三元运算符|循环语句|swich语句

    一.介绍 1.java是oracle(甲骨文)公司的. 2.JAVA语言有3类应用 1)JAVAME 用于嵌入式开发. 比如:电视机顶盒.打印机.PDA又称掌上电脑(手机.平板电脑.游戏机.扫码枪). ...

  4. C语言基础——运算符(定义变量、转义字符、输入输出语句、运算符、32个关键字)

    文章目录 一.定义变量 1.如何定义? 2.如何调用? 二.转义字符 二.输入输出语句 1.输出语句 2.输入语句 三.运算符 3.1 赋值运算符: 3.2 算数运算符: 3.3条件运算符 3.4 逻 ...

  5. MySql基础篇---002 SQL之SELECT使用篇: 基本的SELECT语句,运算符,排序与分页,多表查询,单行函数,聚合函数,子查询

    第03章_基本的SELECT语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑 ...

  6. Java 运算符、表达式、语句

    文章目录 1. 运算符 2. 表达式 3. 语句 1. 运算符 赋值运算 = +, -, *, /, % 算术运算 +, -, !, ~ 一元运算 关系运算 >, <, >=, &l ...

  7. Kotlin入门与进阶:语法(二)类成员,运算符,语句,表达式

    上一篇文章着重介绍了Kotlin中的常量与变量,函数和Lambda表达式(点我补课),这一篇文章专注于类成员,运算符,各种语句和表达式. 类成员 包括属性和方法. 属性:也就是成员变量,是指类范围内的 ...

  8. 【数据分析】python基础必修3—条件语句/运算符/真假值/循环/算法练习

    目录 1.条件语句 ​2.运算符 2.1成员运算符 2.2逻辑运算符 3.真假值的判断 4.身份运算符 5.循环 5.1while循环 5.2for循环 5.3循环的中断 5.4循环算法练习:冒泡排序 ...

  9. php学习笔记-php运算符,类型转换,打印输出语句相较于其他语言的特殊部分-day02

    php运算符,类型转换,打印输出语句相较于其他语言的特殊部分 php运算符 php的类型转换 php打印输出语句 php运算符 1.php运算符与其他高级语言相同的部分 算术运算符(+,-,*,/,% ...

  10. Javs运算符及选择语句结构

    Javs运算符及选择语句结构 运算符: 逻辑运算符:&&.||为二目运算符,!为单目运算符 注意:(逻辑运算符的操作数必须是布尔型数据) 例如:2>8&&9> ...

最新文章

  1. 什么是回归分析(regression analysis)?有哪些类型的回归分析(regression analysis)?
  2. [leetcode] 367. Valid Perfect Square
  3. PPT 下载 | 神策数据张涛:企业服务客户全生命周期运营三步曲总览篇
  4. python文件输出中文_【python】中文的输出,打印,文件编码问题解决方法
  5. 8类网线利弊_网线买机制成品还是自己DIY?有这些点要注意
  6. 用Java编写模仿的太阳系(九星行旋转)--原创
  7. Java Stream ORM现在带有JOIN
  8. Android两个tab吸顶,Android scrollView和viewpager嵌套 指示器吸顶 根据viewpager每
  9. LeetCode MySQL 1205. 每月交易II(union all)*
  10. 卷成这样,非逼我用RTX 3090?(深度学习GPU平台种草
  11. 领导力十律_关于开放领导力的10个最受欢迎的故事
  12. 西门子 1200PLC全额补贴课程
  13. AJAX网页抓取工具 Krabber 0.2.9正式发布
  14. 中证500指数的跟踪基金最近1年收益排名
  15. 服务器管理软件LuManager2.0.99发布,含智能优化
  16. Android Text文字详解
  17. JavaWeb:(二)HTML
  18. 逻辑Flask——Flask模板
  19. 树莓派魔镜总结(包括语音和图像识别)
  20. 最新计算机二级c语言程序设计题库,2016年计算机二级考试C语言程序设计真题题库.doc...

热门文章

  1. linux内核类型lagency,使用u盘安装linux(manjaro)时Grub报错
  2. 知识点:计算机网络的 89 个核心概念
  3. textContent与innerText
  4. 现代软件工程 第一周博客作业
  5. 【转】keil5 missing close quote 错误解决
  6. Docker优势以及与传统虚拟机对比(1)
  7. Linux下Mongodb安装和启动配置
  8. c# webform js文件获取客户端控件,后台cs获取前台客户端控件的值,c#和js的交互...
  9. ActiveMQ(三)——JMS消息结构、JMSReplyTo、面试题(消息丢失,消息重复,消息顺序)
  10. SpringMVC全局异常处理机制常见问题及底层实现分析