bash中执行比较的几种方法

这篇具有很好参考价值的文章主要介绍了bash中执行比较的几种方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

bash 脚本中的 test 命令用于检查表达式的有效性,检查命令或表达式为 true 或者 false。此外,它还可以用于检查文件的类型和权限。

如果命令或表达式有效,则 test 命令返回0,否则返回1。

使用 test 命令

test 命令的基本语法如下所示:

test “var1” operator “var2”

如果其中用到了变量,需要在变量名中使用双引号。

我们看下面的例子,使用 test 命令检查10是否等于20,以及10是否等于10:

$ test 10 -eq 20 && echo "true" || echo "false"

上面的命令中:

  • test - test 命令

  • 10 - 第一个变量

  • -eq - 比较运算符

  • 20 - 第二个变量

如果给定的表达式有效,则执行第一个命令,否则执行第二个命令。

在上述测试命令中,可以使用方括号 [] 来代替 test 命令。不过有一点需要记住,[ 标记和要比较的变量之间需要有空格:

[ 10 -eq 20 ] && echo "true" || echo "false"

bash 比较,bash,服务器,shell,test,centos

除了整数以外,也可以在 bash 中使用 test 命令比较字符串,下面我们来看一些例子。

使用 test 命令比较字符串

检查字符串是否不为空

-n 选项用于检查字符串长度是否为非零。如果字符串不为空则返回 true,如果字符串为空,则返回 false:

$ [ -n "sam" ] && echo "True" || echo "False"

bash 比较,bash,服务器,shell,test,centos

检查字符串是否为空

-z 选项用于检查字符串长度是否为零。如果字符串长度为零,则返回true,否则返回false:

$ [ -z "sam" ] && echo "True" || echo "False"

检查字符串是否相等

“=”运算符检查string1是否等于string2。如果两个字符串相等,则返回0;如果两个字符串不相等,则返回1:

$ [ "sam" = "SAM" ] && echo $? || echo $?

在这里,表达式略有不同。stdout 变量打印使用 $? 而不是 true 或 false。

检查字符串是否不相等

!=运算符检查 String1 是否不等于 String2。如果这两个字符串不相等,则返回0。如果两个字符串相等,则它返回1:

[ "abc" != "ABC" ] && echo $? || echo $?

bash 比较,bash,服务器,shell,test,centos

test 命令比较整数

检查数字是否相等

-eq 选项检查两个整数是否相等,如果相等返回0,否则返回1:

[ 10 -eq 20 ] && echo $? || echo $?

检查数字是否不相等

-ne 选项检查两个整数是否不相等,如果不相等返回0,否则返回1:

[ 10 -ne 20 ] && echo $? || echo $?

检查一个数字是否大于等于另一个

选项 -ge 用于检查整数1 是否大于等于整数2,如果是则返回0,否则返回1:

[ 100 -ge 10 ] && echo $? || echo $?

-gt 运算符检查整数1是否大于整数2。如果是,则返回0。否则,返回1:

[ 20 -gt 10 ] && echo $? || echo $?

检查一个数字是否小于等于另一个

-le 运算符检查整数1是否小于或等于整数2。如果为真,则返回0,否则返回1:

[ 5 -le 10 ] && echo $? || echo $?

-lt 运算符检查整数1是否小于整数2。如果整数1小于整数2,则返回0,否则返回1:

[ 5 -lt 10 ] && echo $? || echo $?

bash 比较,bash,服务器,shell,test,centos

test 命令与文件和目录操作

test 命令还可用于文件和目录,下面我们来看几个例子。

下面的命令用于检查文件对于当前用户是否可执行,如果可执行,返回0,否则返回1:

[ test -x filename ] && echo executable || echo non-executable

也可以相同的方式检查文件的其他权限,比如 r 和 w。在此可使用的其他常用参数包括:



命令 描述
-e 目录/文件是否存在
-f 是否为文件
-d 是否为目录
-s 文件大小是否大于0
-L 是否为符号链接
-S 是否为套接字(socket)

在 bash 脚本中使用 test 命令

上面的例子我们是使用的一行代码做的演示,除此以外,我们还可以在 bash 脚本中使用 test 命令以及 if else 分支条件。

下面我们来看一个简单的例子,传递参数用于比较两个数字:

#!/bin/bash

大家可以执行一下,看看结果,如下图所示:

bash 比较,bash,服务器,shell,test,centos文章来源地址https://www.toymoban.com/news/detail-731302.html

到了这里,关于bash中执行比较的几种方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 限制登录Linux服务器的几种方式

    在日常运维中,我们通常使用防火墙iptables跟firewalld的方式来实现访问控制,但在实际环境中,开启防火墙可能会对业务造成影响,所以以下整理了三种限制登录Linux服务器的几种方式。分别是修改TCP Wrappers服务访问控制、修改sshd_config配置文件、防火墙策略iptables跟firewalld。

    2024年02月17日
    浏览(47)
  • 常用的几种服务器端口转发实现方式

    Windows和Linux服务器上实现端口转发的几种常用方式: 硬件路由器转发:这个是2种系统都可以使用的方式。可以通过在硬件路由器上设置端口转发规则,将外部请求转发到内部服务器的指定端口上。 以下为Linux系统实现端口转发的几种方式: iptables命令实现端口转发:iptable

    2024年02月09日
    浏览(44)
  • MacBook 往服务器上传、下载文件的几种操作

    往服务器传文件、下载文件有很多种方法,可以使用scp、rsync或者rs/sz MacBook上的rz和sz 配置起来比较麻烦 这里就不说了 另外 研发和测试同学可能对于scp命令和rsync命令并不了解 这里也不说了 这里直说两种图形化界面的工具 通过jumpserver登录服务器后 可以简单快速实现上传和

    2024年02月16日
    浏览(64)
  • MySQL客户端和服务器进程通信的几种方式

    真实环境中,数据库服务器进程和客户端进程可能运行在不同的主机中,它们之间必须通过网络来进行通讯。MySQL采用TCP作为服务器和客户端之间的网络通信协议。在网络环境下,每台计算机都有一个唯一的IP地址,如果某个进程有需要采用TCP协议进行网络通信方面的需求,可

    2024年04月24日
    浏览(48)
  • axios 多个baseURL配置、实现不同前缀代理到不同的服务器的几种方式

    前言: 在开发中,有可能遇到每部分的功能的需要调用另一台服务器的地址。这个时候就需要设置不同的请求前缀首先代理到不同的服务器地址。 一、axios封装实例以及代理:(不是完整的封装实例,重点在于baseURL的区别) 文件路径:/CMDB/src/utils/request.js 代理的时候有两个前

    2024年02月04日
    浏览(40)
  • java比较日期大小的几种方法

    1. Date.compareTo() java.util.Date提供了在Java中比较两个日期的经典方法compareTo()。 如果两个日期相等,则返回值为0。 如果Date在date参数之后,则返回值大于0。 如果Date在date参数之前,则返回值小于0。 @Test void testDateCompare() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(\\\"yyyy

    2024年02月03日
    浏览(50)
  • Android开发:RecyclerView获取item位置的几种方法比较

            当使用 RecyclerView 来展示列表数据时,获取 item 的位置是一个常见的需求。RecyclerView 提供了多种获取 item 位置的方法,包括 getAdapterPosition() 、 getBindingAdapterPosition() 、 getAbsoluteAdapterPosition() 等等。这些方法的实现原理和返回值有所不同,因此在实际使用时需要根据

    2023年04月20日
    浏览(83)
  • Unity——延时执行的几种方法

    延时执行的函数,可以自己设定延时要执行的函数和具体延时的时间,是Monobehaviour基类中实现好的方法 在Update等刷新函数内计时,timer += Time.deltaTime 当时间达到预期,执行需要延时的方法。需要注意的是,增量时间Time.deltaTime是每帧都不同的浮点数。计时器不能用 == 去判断

    2024年02月11日
    浏览(39)
  • 【Android】之【延时执行的几种方法】

    在Android日常开发中我们经常会有延时执行某个操作的需求,例如我们启动应用的时候,开始呈现一个引导页面,过了两三秒后,自动跳转到主界面;又如为了控制时序,需要延时执行等等。 下面整理下实现延时执行操作的几种方法: 推荐使用这种方式 适合需要一直在后台运

    2024年02月11日
    浏览(40)
  • [FOC-Stm32]设置PWM占空比(比较值)的几种方法

    近期博主在阅读一些基于STM32的FOC代码中,对PWM占空比的设置问题很感兴趣,于是找了分别拿出来做了一下对比,来看看都是怎么来调整PWM输出的。 下图给出了PWM占空比调整的原理,在定时器循环中,有两个量:ARR 重装载值和 CCR 比较值。定时器内的计数器从0到ARR循环记录数

    2024年02月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包