Linux 比较判断运算(if test)

简介:
2016-04-27 14:19 by pursuer.chen, 172 阅读, 0 评论, 收藏, 编辑

介绍

本篇文章主要是列举在shell命令中常出现的一些用来做比较的运算符,这些运算符是编写shell脚本的基础;

 

数值运算符

注意:数值运算符只是针对数值的比较,如果用来比较的是字符或者字符串则会返回报错“ integer expression expected”

-eq 等于则为真,如果是对整数进行比较相当于“=”

-ne 不等于则为真,如果是对整数进行比较相当于“!=”

-gt 大于则为真,如果是对整数进行比较相当于“>”

-ge 大于等于则为真,如果是对整数进行比较相当于“>=”

-lt 小于则为真,如果是对整数进行比较相当于“<”

-le 小于等于则为真,如果是对整数进行比较相当于“<=”

 

字符串比较符

=:字符串包含的文本是否一样

== 两个字符串是否相等

>:比较字母的大小,比如var1 > var2,如果var1字母大于var2则返回真

<:和大于相反

!= 两个字符串不相等

-z 空字符串

-n 非空字符串

注意:字符串的比较有时候有可能需要用双中括号“[[   ]]”,比如调用了命令进行比较,如果这个时候还是使用单中括号会报错,如下:

复制代码
#!/bin/bash
var1="a";
var2="a"
if [[ `cat $var1` = `cat $var2` ]]
then
echo "eq"
else
echo "neq"
fi
复制代码

cat命令应用的必须是个文件,不能直接引号内容。

文件运算符

[ -a FILE ] :如果 FILE 存在则为真。

[ -b FILE ] :如果 FILE 存在且是一个块特殊文件则为真。

[ -c FILE ] :如果 FILE 存在且是一个字特殊文件则为真。

[ -d FILE ] :如果 FILE 存在且是一个目录则为真。

[ -e FILE ] :如果 FILE 存在则为真。

[ -f FILE ] :如果 FILE 存在且是一个普通文件则为真。

[ -g FILE ] :如果 FILE 存在且已经设置了SGID则为真。

[ -h FILE ] :如果 FILE 存在且是一个符号连接则为真。

[ -k FILE ] :如果 FILE 存在且已经设置了粘制位则为真。

[ -p FILE ] :如果 FILE 存在且是一个名字管道(F如果O)则为真。

[ -r FILE ] :如果 FILE 存在且是可读的则为真。

[ -o OPTIONNAME ] :如果 shell选项 “OPTIONNAME” 开启则为真。

[ -s FILE ] :如果 FILE 存在且大小不为o则为真。

[ -t FD ] :如果文件描述符 FD 打开且指向一个终端则为真。

[ -u FILE ] :如果 FILE 存在且设置了SUID (set user ID)则为真。

[ -w FILE ] :如果 FILE 如果 FILE 存在且是可写的则为真。

[ -x FILE ] :如果 FILE 存在且是可执行的则为真。

[ -z STRING ]: “STRING” 的长度为零则为真。

[ -O FILE ]:如果 FILE 存在且属有效用户ID则为真。

[ -G FILE ]:如果 FILE 存在且属有效用户组则为真。

[ -L FILE ] :如果 FILE 存在且是一个符号连接则为真。

[ -n string ]:判断内容是否为空

[ -N FILE ]: 如果 FILE 存在 and has been mod如果ied since it was last read则为真。

[ -S FILE ] :如果 FILE 存在且是一个套接字则为真。

[ FILE1 -nt FILE2 ] :如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。

[ FILE1 -ot FILE2 ] :如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。

[ FILE1 -ef FILE2 ] :如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。

建议也使用双中括号

 

可以用test命令检查某个条件是否成立,它可以进行数值、字符串和文件3个方面的测试,如果使用了test那么就不要使用[]将命令括起来,否则会返回报告如“too many arguments” 。

复制代码
#!/bin/bash
var1="a"
var2="b"
var3="/data/test"
if test  $var1 == $var2
 then
 echo "$var1=$var2"
else
 echo "$var1!=$var2"
fi
 echo "$var1,$var2"

if test -x "$var3"
then
echo "可执行文件"
fi
复制代码

 

逻辑判断符

-a:与操作,可以用&&代替

-0:或操作,可以用||代替 

!:非操作

算术运算符 

+

-

*

/


+=:例如var+=1等同于var=var+1

-=

*=

/= 

 

位操作符

 

 注意:所有的这些运算符前后都要有空格否则就不是比较而是赋值操作。

总结

 

 

 

 


本文转自pursuer.chen(陈敏华)博客园博客,原文链接:http://www.cnblogs.com/chenmh/p/5377756.html,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
Linux
百度搜索:蓝易云【Linux重启网卡报错Determining if ip address怎么解决?】
请注意,在执行涉及网络配置的操作时要小心,确保避免重要网络设置的错误。建议在修改网络配置之前备份相关文件,以便出现问题时可以还原配置。如果不确定如何操作,最好寻求网络专家的帮助。
56 0
|
26天前
|
Shell Linux BI
linux shell脚本中 if 条件判断
linux shell脚本中 if 条件判断
13 0
|
2月前
|
人工智能 Linux Shell
linux命令-条件判断-test
linux命令-条件判断-test
14 1
|
2月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
【Shell 命令集合 文档编辑 内建命令】Linux数值运算和赋值操作 let命令使用指南
31 0
|
2月前
|
Shell Linux C语言
【Shell 命令集合 文档编辑】Linux 种算术运算 expr命令使用指南
【Shell 命令集合 文档编辑】Linux 种算术运算 expr命令使用指南
31 0
|
2月前
|
Linux Shell
linux使用expr、let、bc、(())、[]进行算术运算的命令
linux使用expr、let、bc、(())、[]进行算术运算的命令
21 1
|
2月前
|
Kubernetes Shell Linux
linux|shell编程|shell脚本内的加减乘除运算实现和π值的计算示例
linux|shell编程|shell脚本内的加减乘除运算实现和π值的计算示例
136 0