Linux Shell 编程中 常用的 比较运算符

Linux Shell 编程中 常用的 比较运算符

普通比较 包含在 []中

数值比较(双目)

  • -eq : 相等判断(equal)
  • -ne: 不等于判断(not equal)
  • -lt: 小于判断(less than)
  • -gt: 大于判断(greater than)
  • -le: 小于等于(less than or equal)
  • -ge: 大于等于(greater than or equal)

字符串比较

双目
  • =: 相等比较
  • \>: 大于比较(按照字典顺序比较, 因为 > 本身是重定向的符号,因而在shell编程中需要加\来转义)
  • \<: 小于比较(同上)
  • !=: 不等于比较
单目
  • -n: 判断字符产长度是否非0 (none zero)
  • -z: 判断字符串长度是否为0 (zero)

文件比较

单目
  • -d: 判断文件手否存在且是一个目录(directory)
  • -e: 判断文件是否存在(exitence)
  • -f: 判断文件是否存在且是一个文件(非目录)(file)
  • -s: 判断文件是否存在且非空(signed)
  • -r: 判断文件是否存在并且可读(readable)
  • -w: 判断文件是否存在且可写(writable)
  • -x:判断文件是否存在且可执行(excutable)
  • -O: 判断文件是否存在且属于当前用户所有(own)
  • -G:判断文件是否存在且默认组和当前用户相同(group)
双目
  • -nt: 判断两个文件是否前者比后者新(new time)
  • -ot: 判断两个文件是否前者比后者旧(old time)

高级比较

包含在 (()) 和 [[]]中

((expression)): 高级数学表达式比较:

expression 不需要是由 -eq, \le,…, 而是直接使用 ==, < …
例:
#! /bin/bash
var=10

if ((10 == $var))
then
    echo "hello $var = 10"
fi

if ((10 ** 2 > $var + 20))
then
    square=$[ 10**2 ]
    echo "hello 10 ** 2 = $square > $var + 20"
fi

结果
hello 10 = 10
hello 10 ** 2 = 100 > 10 + 20

[[expression]]: 高级字符产表达式比较

#!/bin/bash

str="hello world"

if [[ $str == h*d ]]
then
    echo "yes $str == 'h*d'"
fi
结果
yes hello world == 'h*d'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值