Linux Shell编程(4): 逻辑运算符、逻辑表达式详解

shell的逻辑运算符 涉及有以下几种类型,因此只要适当选择,可以解决我们很多复杂的判断,达到事半功倍效果。

一、逻辑运算符

逻辑卷标 表示意思
1. 关于档案与目录的侦测逻辑卷标!
-f 常用!侦测『档案』是否存在 eg: if [ -f filename ]
-d 常用!侦测『目录』是否存在
-b 侦测是否为一个『 block 档案』
-c 侦测是否为一个『 character 档案』
-S 侦测是否为一个『 socket 标签档案』
-L 侦测是否为一个『 symbolic link 的档案』
-e 侦测『某个东西』是否存在!
2. 关于程序的逻辑卷标!
-G 侦测是否由 GID 所执行的程序所拥有
-O 侦测是否由 UID 所执行的程序所拥有
-p 侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)
3. 关于档案的属性侦测!
-r 侦测是否为可读的属性
-w 侦测是否为可以写入的属性
-x 侦测是否为可执行的属性
-s 侦测是否为『非空白档案』
-u 侦测是否具有『 SUID 』的属性
-g 侦测是否具有『 SGID 』的属性
-k 侦测是否具有『 sticky bit 』的属性
4. 两个档案之间的判断与比较 ;例如[ test file1 -nt file2 ]
-nt 第一个档案比第二个档案新
-ot 第一个档案比第二个档案旧
-ef 第一个档案与第二个档案为同一个档案( link 之类的档案)
5. 逻辑的『和(and)』『或(or)』
&& 逻辑的 AND 的意思
|| 逻辑的 OR 的意思
运算符号 代表意义
= 等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
!= 不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
< 小于 应用于:整型比较 在[] 中,不能使用 表示字符串
> 大于 应用于:整型比较 在[] 中,不能使用 表示字符串
-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式
-z 空字符串
-n 非空字符串

二、逻辑表达式

  • test 命令

使用方法:test EXPRESSION

如:

[[email protected] ~]# test 1 = 1 && echo ‘ok‘
ok

[[email protected] ~]# test -d /etc/ && echo ‘ok‘ 
ok

[[email protected] ~]# test 1 -eq 1 && echo ‘ok‘
ok

[[email protected] ~]# if test 1 = 1 ; then echo ‘ok‘; fi
ok

注意:所有字符 与逻辑运算符直接用“空格”分开,不能连到一起。

  • 精简表达式
  • [] 表达式

[[email protected] ~]# [ 1 -eq 1 ] && echo ‘ok‘           
ok

[[email protected] ~]# [ 2 < 1 ] && echo ‘ok‘                  
-bash: 2: No such file or directory

[[email protected] ~]# [ 2 \< 1 ] && echo ‘ok‘

[[email protected] ~]# [ 2 -gt 1 -a 3 -lt 4 ] && echo ‘ok‘

ok

[[email protected] ~]# [ 2 -gt 1 && 3 -lt 4 ] && echo ‘ok‘   
-bash: [: missing `]‘

注意:在[] 表达式中,常见的>,<需要加转义字符,表示字符串大小比较,以acill码 位置作为比较。 不直接支持<>运算符,还有逻辑运算符|| && 它需要用-a[and] –o[or]表示

  • [[]] 表达式

[[email protected] ~]# [ 1 -eq 1 ] && echo ‘ok‘           
ok

[[email protected] ~]$ [[ 2 < 3 ]] && echo ‘ok‘ 
ok

[[email protected] ~]$ [[ 2 < 3 && 4 > 5 ]] && echo ‘ok‘ 
ok

注意:[[]] 运算符只是[]运算符的扩充。能够支持<,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|| &&

时间: 2024-12-18 04:39:23

Linux Shell编程(4): 逻辑运算符、逻辑表达式详解的相关文章

Shell编程之---awk命令详解

awk编程 awk是一种编程语言.gawk.是最新版本,当前的linux版本用的都是gawk awk是gawk的软链接 awk工作原理 BEGIN   #在未读取文件行之前执行 主输入循环 (main input loop),反复执行,直到终止条件触发 END     #在读取文件行完毕后执行 awk的三种调用方法 1.在shell命令行输入命令调用awk #awk [-f 域分隔符] 'awk cmd' file 2.在awk程序段插入脚本文件,然后通过awk命令调用他 #awk -f 'aw

Shell编程之变量(详解)

一.什么是变量 在我们上学时,我们就接触数据方程式:例如:已知x=1 y=x+1 那么y等于多少,我们毫不犹豫的会算出来2,但是在shell中x就是变量名,那么对应的1就是变量值,在这里的等于号,在shell中称为赋值!x=1      x(变量名)   =(赋值)    1(变量值) 例如:以下在centos7中展示 [[email protected] ~]# name="yankerp" <--定义变量-变量名为name,对应的变量值名字叫做yankerp [[email 

Linux shell 的 test 命令用法详解

基本格式:test expression expression为test命令构造的表达式.这里expression是test命令可以理解的任何有效表达式,该简化格式将是读者可能会踫见的最常用格式返回值:test命令或者返回0(真) 或者返回1(假). test可理解的表达式类型分为四类: 表达式判断 字符串比较 数字比较 文件比较 1)判断表达式 if test  (表达式为真)if test !表达式为假test 表达式1 –a 表达式 2                两个表达式都为真tes

Shell编程之---sed命令详解

sed 是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑 sed只是对缓冲区中原始文件的副本进行编辑,并不编辑原始的文件 sed命令调用的三种方式 1.在shell命令行输出命令调用sed sed  [option]  'sed cmd'  file 2.将sed命令插入脚本 sed  [option] -f  'sed.sh'  file #vi sed.sh    sed要调用的脚本为sed.sh #/file:/a\This is a test line!!! 调用脚本 #sed

Shell编程之---grep命令详解

grep 一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来 grep [option]  [mode]  [file] -c       #只输出匹配行的数量 -i       #搜索时忽略大小写 -h       #查询多文件时不显示文件名 -l       #只列出符合匹配的文件名,而不列出具体的匹配行 -n   #列出所有的匹配行,并显示行号 -s   #不显示不存在或无匹配文本的错误信息 -v   #显示不包含匹配文本的所有行 -w   #匹配整词 -x   #匹

【shell】Linux shell 之break和continue详解

break和continue都可以在循环中使用,但是两个的功能有点不同,比如break是跳出整个循环,而continue则是跳出本次循环,继续下个循环,下面我们会通过例子来演示这两个的不同之处. ** 例子:打印数字1-10,如果 i>8则退出循环. #!/bin/bash - for i in `seq 10` do [ $i -gt 8 ] && break || echo $i done 执行结果: [[email protected] scripts]# bash break

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

京峰Linux Shell编程从入门到精通

课程介绍:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. -------------------课程目录------------------- <Shell编程从入门到精通> ├1.linux下shell编程基础入门_(new).mp4├2.Shell编程之变量及LAMP导航菜单编写_(new).mp4├3.Shell编程之IF条件语句各种案例演练_(new).mp4├4.使用if条件语句编写MySQL备份脚本_(new).mp4

Linux用户态程序计时方式详解

前言 良好的计时器可帮助程序开发人员确定程序的性能瓶颈,或对不同算法进行性能比较.但要精确测量程序的运行时间并不容易,因为进程切换.中断.共享的多用户.网络流量.高速缓存访问及转移预测等因素都会对程序计时产生影响. 本文将不考虑这些影响因素(相关资料可参考<深入理解计算机系统>一书),而仅仅关注Linux系统中用户态程序执行时间的计算方式.除本文所述计时方式外,还可借助外部工具统计耗时,如<Linux调试分析诊断利器——strace>一文中介绍的strace. 本文示例代码的运行环