比较两个字符串是否相等的办法是:

if [ "$test"x = "test"x ]; then

这里的关键有几点:

1 使用单个等号

2 注意到等号两边各有一个空格:这是unix shell的要求

3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.

整数比较

-eq 等于,如:if [ "$a" -eq "$b" ]

-ne 不等于,如:if [ "$a" -ne "$b" ]

-gt 大于,如:if [ "$a" -gt "$b" ]

-ge 大于等于,如:if [ "$a" -ge "$b" ]

-lt 小于,如:if [ "$a" -lt "$b" ]

-le 小于等于,如:if [ "$a" -le "$b" ]

大于(需要双括号),如:(("$a" > "$b"))

>= 大于等于(需要双括号),如:(("$a" >= "$b"))

小数据比较可使用AWK

字符串比较

= 等于,如:if [ "$a" = "$b" ]

== 等于,如:if [ "$a" == "$b" ],与=等价

注意:==的功能在[[]]和[]中的行为是不同的,如下:

1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true

2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true

3

4 [ $a == z* ] # File globbing 和word splitting将会发生

5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true

一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.

但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.

!= 不等于,如:if [ "$a" != "$b" ]

这个操作符将在[[]]结构中使用模式匹配.

大于,在ASCII字母顺序下.如:

if [[ "$a" > "$b" ]]

if [ "$a" \> "$b" ]

注意:在[]结构中">"需要被转义.

具体参考Example 26-11来查看这个操作符应用的例子.

-z 字符串为"null".就是长度为0.

-n 字符串不为"null"

注意:

使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z

或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可

以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.

if判断式

if [ 条件判断一 ] && (||) [ 条件判断二 ]; then

elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then

else

执行第三段內容程式

fi

例如:

root@Bizbox:~# a=0

root@Bizbox:~# b=0

root@Bizbox:~# c=5

root@Bizbox:~# if [ $a = 0 -a $b = 0 ]&&[ $c != 0 ]; then

> echo success

> fi

success

if 使用的表达式

Primary 意义

[ -a 文件 ] 如果文件存在为真。

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

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

[ -d 文件 ] 为真 如果 文件 存在 而且 是一个 目录。

[ -e 文件 ] 为真 如果 文件 存在。

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

[ -g 文件 ] 为真 如果 文件 存在 而且 已经设置了他的 SGID 位。

[ -h 文件 ] 为真 如果 文件 存在 而且 是一个 符号连接。

[ -k 文件 ] 为真 如果 文件 存在 而且 他的粘住位已经设置。

[ -p 文件 ] 为真 如果 文件 存在 而且 是一个 已经命名的管道 (F 如果O)。

[ -r 文件 ] 为真 如果 文件 存在 而且 是可读的。

[ -s 文件 ] 为真 如果 文件 存在 而且 比零字节大。

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

[ -u 文件 ] 为真 如果 文件 存在 而且 已经设置了他的 SUID (set user ID)位。

[ -w 文件 ] 为真 如果 文件 为真 如果 文件 存在 而且 是可写的。

[ -x 文件 ] 为真 如果 文件 存在 而且 是可执行的。

[ -O 文件 ] 为真 如果 文件 存在 而且 属于有效用户ID。

[ -G 文件 ] 为真 如果 文件 存在 而且 属于有效组ID。

[ -L 文件 ] 为真 如果 文件 存在 而且 是一个 符号连接。

[ -N 文件 ] 为真 如果 文件 存在 而且 has been mod 如果ied since it was last read。

[ -S 文件 ] 为真 如果 文件 存在 而且 是一个 socket。

[ 文件1 -nt 文件2 ] 为真 如果 文件1 has been changed more recently than 文件2, or 如果

文件1 存在 而且

文件2 does not。

[ 文件1 -ot 文件2 ] 为真 如果 文件1 比 文件2 旧, 或者 文件2 存在而且 文件1 不存在。

[ 文件1 -ef 文件2 ] 为真 如果 文件1 而且 文件2 refer to the same device 而且 inode

numbers。

[ -o 选项名 ] 为真 如果 shell 选项 "选项名" 开启。

[ -z STRING ] 为真 如果 "STRING"的长度是零。

[ -n STRING ] 或者 [ STRING ] 为真 "STRING"的长度是非零值。

[ STRING1 == STRING2 ] 如果两个字符串相等为真。 "=" may be used instead of "==" for

strict POSIX compliance。

[ STRING1 != STRING2 ] 为真 如果 两两个字符串不相等。

[ STRING1 < STRING2 ] 为真 如果 "STRING1" sorts before "STRING2" lexicographically in the

current locale。

[ STRING1 > STRING2 ] 为真 如果 "STRING1" sorts after "STRING2" lexicographically in the

current locale。

[ ARG1 OP ARG2 ]

"OP" 是 -eq, -ne, -lt, -le, -gt or -ge 其中一个。 These arithmetic binary operators

return 为真 如果 "ARG1" is equal to, not equal to, less than, less than or equal to, greater

than, or greater than or equal to "ARG2", respectively。 "ARG1" 而且 "ARG2" are

integers。

表达式可以借以下操作符组合起来, listed in decreasing order of precedence:

操作符效果

[ ! EXPR ] 如果EXPR 为假则为真。

[ ( EXPR ) ] 返回EXPR 的值。 这样可以用来忽略正常的操作符优先级。

[ 表达式1 -a 表达式2 ] 如果表达式1 而且表达式2 同时为真则为真 。

[ 表达式1 -o 表达式2 ] 如果表达式1 或者表达式2 其中之一为真则为真。

elif else if oracle_shell中if做比较相关推荐

  1. SAP WM LT15不能取消二步法确认场景中只做过第一步确认的TO单

    SAP WM LT15不能取消二步法确认场景中只做过第一步确认的TO单 1,如下TO 需要2步法确认,TO#3000006418 看其确认状态时黄色三角形状态,说明第一步确认(LT1D)已经被业务人员 ...

  2. json中怎么去掉[]外的引号_SEO优化中怎么做站内和站外的锚文本

    在影响排名的所有SEO因素中,我们把最重要的因素献给了锚文本链接! 做站内和站外锚文本的技巧,包括基础的操作. 1.所有锚文本,都尽量采用绝对地址. 这样,当你的文章被转载.被采集.或Rss阅读器抓取 ...

  3. python在工作上可以干什么-学习Python以后能在企业里工作中能做什么?

    原标题:学习Python以后能在企业里工作中能做什么? 学习Python以后能在企业里工作中能做什么? ​​大数据Python作为一门独特的语言在企业的应用十分重要.有人认为Python是一门新增的语 ...

  4. DevExpress 中 在做全选的全消功能的时候 加快效率

    DevExpress 中 在做全选的全消功能的时候 加快效率 在做 DevExpress 中对增加的选择 Check列 控制全选的全消时通过以下代码红色字代码效率会有明显的提升: private vo ...

  5. 【项目经验】如果想在mapper.xml文件中的一个标签中写多条sql语句,则需要在jdbc的配置文件中稍做配置

    如果想在mapper.xml文件中的一个标签中写多条sql语句,则需要在jdbc的配置文件中稍做配置: url=jdbc:mysql://127.0.0.1:3306/airipo?useUnicod ...

  6. ad中电容用什么封装_二极管在电路中到底做什么用的

    所有的电子电路中基本上都会用到二极管,它的特性也是非常之多,最主要就是单方向导电性,(单向导电性的两根引脚之间的电阻分为正向电阻和反向电阻两种).人们利用这些不同特性构成各种具体的应用电路,分析不同电 ...

  7. Deskreen – 将电脑屏幕共享到浏览器中,做第二块屏幕[Win/macOS/Linux]

    介绍: Deskreen 是一款非常实用的开源项目,它可以将你的电脑屏幕共享到浏览器中,做第二块屏幕.支持 Windows.macOS.Linux,可分享整块屏幕,或只分享某一个应用界面,支持多个浏览 ...

  8. rust全息要啥才能做_在 Rust 中不能做什么

    编者注:上周 Armin 在自己的博客上首次发布了这个版本.如果你想再次阅读这篇文章,或者想看看 Armin 还在做什么,一定要去看看. 去年一直很有趣,因为我们用 Rust 建造了很多好东西,并且这 ...

  9. 在html表格中怎么创建下拉列表,在html网页中如何做个下拉列表?下拉列表的方法有哪几种?...

    在我们是html学习中,我们会遇到各种不同的标签,那么今天我们就来说说"在html网页中如何做个下拉列表"吧!以下是小编整理的一个方法. 1.首先我们在开发工具中新建一个新的文件, ...

最新文章

  1. Boost:bind绑定visit测试程序
  2. excel随机排序,在A列产生顺序号
  3. 【Python学习】内置函数(不断更新)
  4. sql关系数据库计算机,关系数据库语言SQL - 淮阴工学院计算机工程实验中 ….ppt...
  5. Python实战从入门到精通第十八讲——改变对象的字符串显示
  6. apache2.4.18中启用h2c
  7. Android studio jni
  8. pid调节软件_三面大疆惨败,因为不懂PID的积分抗饱和
  9. 宝塔面板解除强制绑定手机账号限制教程
  10. idea 设置版权信息
  11. Web 应用防火墙:Modsecurity 和核心规则集
  12. Masked Image Modelling(MAE,iBOT,Data2vec,SimMIM,CAE,BEVT)
  13. electron 修改修改应用默认图标
  14. Java面试题之IO流分为几种?
  15. iOS通讯录复制的手机号码字符串多了奇怪的unicode码\u0000202d-\u0000202c
  16. 安卓 新闻客户端毕业设计项目
  17. 宜家订单JSON_在宜家网上商城购物是一种什么体验?
  18. linux内存管理(一)-内存管理架构
  19. php ses 发送邮件,Amazon SES – 通过PHP sdk发送HTML邮件
  20. CoreData数据库探索

热门文章

  1. Jumpserver web界面跳板机
  2. Android获取当前网络状态
  3. Dynamic CRM 2013学习笔记(三十三)自定义审批流4 - 规则节点 -有分支的流程处理...
  4. 如果安装License失败的解决方案
  5. TRUNCATE DELETE
  6. Derby与mysql的关系_Derby数据库简单介绍和使用方法 | 学步园
  7. 防注入php 留言板代码,简单的 php 防注入代码
  8. matlab实现谱聚类法图像分割代码,一种基于谱聚类的图像分割方法与系统与流程...
  9. mysql连接查询(内联)_MySQL之连接查询
  10. idea 启动tomcat 工程_如何在IDEA中创建web项目并且部署到Tomcat中