说明:

1. 把字符串当成整型进行比较,由于abcd等字符对不上0123当程序尝试去转成二进制时无法完成转换,所以用于数值比较的运算不能用于字符串比较;但是把整型当成字符串进行比较,0123这些数值完全可以转成ASCII码而且原本两个整型相等则变成ASCII码还是相等、不等的还是不等,所以可用于字符串的比较也可用于整型的比较。

2. if语句中,数值比较的写法是if [ $var1 -ge $var2 ];字符串比较的写法是if [ “$var1” != “$var2” ],其中加双引号只是兼容$var2处为空的情况

3. 在各种运算中,test命令的运算和中括号是等效的

4. 赋值时等号两边没空格,比较或测试时运算符两边都要有空格

5. shell默认是字符运算,如果想当数值进行运算要在前边加上expr,如:var3=`expr $var1 + $var2`

6. shell的文件包含命令只有“.”,而且该命令只能一次包含单个文件(当然可以用*表示文件夹下所有文件)而不能包含一个文件夹;所见的!includedir和#includedir并不存在这样的命令,应该是程序自己实现的包含功能

7. “.”在shell中执行则会影响shell的环境,但如果只在脚本中执行那只影响脚本中的环境不会影响当前shell的环境;source其实也如此。

1.只适用于数值的比较

该类型操作会把两边变量当成整型进行加减运算,字符串abcd按整型运算无法进行,所以此类型不能用于字符串比较

参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

if  [ $i -eq 10 ]

2.适用于字符串的比较(也可用于数值比较)

参数 说明
== 相等则为真
!= 不相等则为真

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

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

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

[ $a == z* ]              #file flobbing和word splitting将会发生

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

3.字符串测试运算

参数 说明
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

if [ -z $i ]

4.文件测试运算

参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

if [ -d /root/cw ]

参考:
https://www.cnblogs.com/lsdb/p/7735533.html

http://www.runoob.com/linux/linux-shell-test.html

最新文章

  1. wpf 后台比例设置高度
  2. Java 循环中标签的作用
  3. escape(), encodeURI()和encodeURIComponent()(转)
  4. Ubuntu 15.04 无损扩展分区(目录)容量的方法 (无需格式化, 文件不丢失)
  5. iOS 使用compare 进行对比
  6. NWERC 2012 Problem I Idol
  7. python-增删改查
  8. 各种ORM框架对比(理论篇,欢迎来观摩)
  9. Linux 开机引导流程
  10. 简单svg动画实现
  11. SynchronousQueue 的联想
  12. 网站开发进阶(三十七)JSP页面跳转问题解决
  13. 引擎设计跟踪(九.14.3) deferred shading 准备
  14. springdata笔记2
  15. Spring AOP切点表达式用法总结
  16. CentOS7下gitlab的搭建
  17. RM报表 实际打印的判断
  18. jquery插件开发的demo
  19. HDU4666+POJ2926【最远曼哈顿距离】
  20. thinkphp整合系列之phpexcel导入excel数据

热门文章

  1. java精确计算工具类
  2. 123457123457#0#-----com.yuming.TruckCarRun01--前拼后广--大卡车游戏cym
  3. python 中 logging 模块的 log 函数以及坑
  4. tcpdump抓包代码
  5. Delphi ADOQuery的速度优化
  6. Win10安装PostgreSQL9.6
  7. [c++]C++关键字之friend
  8. Jenkins占用内存较大解决办法
  9. async/await小知识点
  10. python 文件读写操作(24)