首页 > 系统相关 >Shell 条件表达式的使用

Shell 条件表达式的使用

时间:2023-08-12 16:32:35浏览次数:31  
标签:文件 存在 Shell 数字 相等 并且 条件 TRUE 表达式

介绍

条件表达式可以是一元的,也可以是二元。一元表达式常用于检查文件状态、字符串运算、数字运算。

使用

检查文件状态参数

  • -a 文件存在,则为真(TRUE)。
  • -b 文件存在并且是块设备,则为真(TRUE)。
  • -c 文件存在并且是字符设备,则为真(TRUE)。
  • -d 文件存在并且是目录,则为真(TRUE)。
  • -e 文件存在,则为真(TRUE)。跟-a的作用一致。
  • -f 文件存在并且是常规文件,则为真(TRUE)。
  • -g 文件存在并且有设置set-group-id位,则为真(TRUE)。
  • -h 文件存在并且是符号链接,则为真(TRUE)。
  • -k 文件存在并且设置了sticky,则为真(TRUE)。
  • -p 文件存在并且是命名管道(FIFO),则为真(TRUE)。
  • -r 文件存在并且权限是可以读的,则为真(TRUE)。
  • -s 文件存在并且大小大于0,则为真(TRUE)。
  • -t 文件存在并且文件描述符fd已打开并指向终端,则为真(TRUE)。
  • -u 文件存在并且设置了set-user-id位,则为真(TRUE)。
  • -w 文件存在并且权限是可以写的,则为真(TRUE)。
  • -x 文件存在并且权限是可执行的,则为真(TRUE)。
  • -G 文件存在并且拥有者是有效的组ID,则为真(TRUE)。
  • -L 文件存在并且是符号链接,则为真(TRUE)。
  • -N 文件存在并且自上次读取以来已被修改,则为真(TRUE)。
  • -O 文件存在并且拥有者是有效的用户ID,则为真(TRUE)。
  • -S 文件存在并且是套接字,则为真(TRUE)。
  • file1 -ef file2 文件1和文件2引用相同的设备和inode编号,则为真(TRUE)。
  • file1 -nt file2 文件1比文件2新(根据修改日期),或者文件1存在而文件2不存在,则为真(TRUE)。
  • file1 -ot file2 文件1比文件2旧(根据修改日期),或者文件2存在而文件1不存在,则为真(TRUE)。

检查文件状态示例

下面是一个判断文件是否存在的shell脚本,若/usr/local/src/test.sh文件存在,就会将“文件已存在”打印到控制台,反之,则打印“文件不存在”。

value=/usr/local/src/test.sh

if [ -a "${value}" ];then
  echo "文件已存在"
else
  echo "文件不存在"
fi

执行过程如下:

Shell 条件表达式的使用_shell变量

字符串运算

  • -v shell变量存在,则为真(TRUE)。
  • -R shell变量存在并且名称被引用,则为真(TRUE)。
  • -z 字符串的长度为0,则为真(TRUE)。
  • -n 字符串的长度非0,则为真(TRUE)。
  • string1 == string2 字符串相等,则为真(TRUE)。
  • string1 = string2 字符串相等,则为真(TRUE)。单个等号字符的情况下,应该跟test命令一起使用,来确保POSIX一致性。
  • string1 != string2 字符串不相等,则为真(TRUE)。
  • string1 < string2 字符串按字典顺序排在string2之前,则为真(TRUE)。
  • string1 > string2 字符串按字典顺序排在string2之后,则为真(TRUE)。

字符串运算示例

该脚本时判断两个字符串是否相等,若参数aaa和参数bbb的值相等,就会将“变量相等”打印到控制台,反之,则打印“变量不相等”。

aaa=age
bbb=ccc

if [ "$aaa" == "$bbb" ];then
  echo "变量相等"
else
  echo "变量不相等"
fi

执行过程如下:

Shell 条件表达式的使用_shell变量_02

数字运算

数字运算时,两边的数字必须是正整数或负整数。

注意,当和[[一起使用时,两边的数字被作为算术表达式计算。

  • -eq 两边的数字相等,则为真(TRUE)。
  • -ne 两边的数字不相等,则为真(TRUE)。
  • -lt 左边数字小于右边数字,则为真(TRUE)。
  • -le 左边数字小于或等于右边数字,则为真(TRUE)。
  • -gt 左边数字大于右边数字,则为真(TRUE)。
  • -ge 左边数字大于或等于右边数字,则为真(TRUE)。

数字运算示例

该脚本是判断参数a和参数b的值是否相等,若参数值相等,就会将“相等”打印到控制台,反之,则打印“不等于”。

a=3
b=5

if [ "$a" -eq "$b"  ];then
  echo "等于"
else
  echo "不等于"
fi

执行过程如下:

Shell 条件表达式的使用_shell变量_03

标签:文件,存在,Shell,数字,相等,并且,条件,TRUE,表达式
From: https://blog.51cto.com/bxbdba/7059741

相关文章

  • jmeter通过BeanShell对接口参数进行MD5和HmacSHA256加密【杭州多测师_王sir】
    一、在eclipse里面编写MD5加密算法packagecom.Base64;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;publicclassMd5Utils{publicstaticStringmd5(StringsourceStr){Stringresult="";try......
  • 条件控制语句
    条件控制语句if~~else案例importjava.util.Scanner;publicclassIf{ publicstaticvoidmain(String[]args){ Scannerinput=newScanner(System.in); System.out.println("请输入你的年龄"); intage=input.nextInt(); if(age>18){ System.out.pri......
  • shell 判断文件新旧
    一、-nt判断file1是否比file2新["/data/file1"-nt"/data/file2"]二、-ot判断file1是否比file2旧["/data/file1"-ot"/data/file2"]参考:https://www.imooc.com/article/325970......
  • 改变端口号shell脚本
    1#开启端口2functionstartProxy(){3exporthttps_proxy=https://127.0.0.1:7890;4exporthttp_proxy=http://127.0.0.1:7890;5exportall_proxy=socks5://127.0.0.1:7890;6}7#获取端口8functiongetProxy(){9echohttp_proxy:$http_proxy......
  • 【面试题】 JavaScript中高级语法--?? 表达式 的作用
    前言在JavaScript中,双问号(??)表达式是一种非常有用的方法。它的作用是用来检测一个值是否为null或undefined。如果该值为null或undefined,那么双问号表达式会返回一个默认值。下面我们就来具体探究一下双问号表达式的用法,以及它与其他相似方法的区别。具体用法。其实,双问号表达式就是......
  • 什么是Shell,初识Shell脚本Shell编程,shell介绍,Linux
    脚本脚本就是批处理平常一个命令不能完成的任务,写到一个文件当中,有多个命令按照一定的逻辑来进行编写编写完后去执行这个文件,随后他就会按照流程多个命令,多个语句,达到批处理的一个任务shell 系统分成了三层第一层是kernel(内核)内核是操作系统的核心,主要负责1管理硬件,电脑cpu是什么......
  • Openlayers构建指定发布图层的查询条件
    constfeatureRequest=newol.format.WFS().writeGetFeature({srsName:"EPSG:4326",//这里的EPSG不要改为4326,可能无法显示?featureNS:"http://geoserver.org/WS",//这里是工作空间中的命名空间urlfeature......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • Linux之shell脚本的条件语句
    目录一、测试1.1测试1.2比较整数数值1.3字符串1.4逻辑测试1.5双中括号[[]]1.6(){}二、if语句2.1分支结构2.2case2.3echo一、测试1.1测试1.2比较整数数值1.3字符串1.4逻辑测试1.5双中括号[[]]1.6(){}二、if语句2.1分支结构2.2case2.3echo......