我们可以用if,if else 以及逻辑运算符来执行测试,而用一些比较运算符来比较数据。
我们可以用[ ... ]逻辑运算符进行条件比较:
[ condition ] && action; #如果condition为真,则执行action
[ condition ] || action; #如果condition为假,则执行action
算数比较 [ ... ]

[ $var -eq 0 ] #当$var等于0时,返回真
[ $var -ne 0 ] #当$var不等于0时,返回真
重要的操作符如下:
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
可以按下面的方法结合多个条件进行测试:
[ $var1 -ne 0 -a $var2 -gt 2 ] #使用逻辑与-a
[ $var -ne 0 -o $var2 -gt 2 ] #逻辑或 -o
文件系统相关测试 [ ... ]
我们可以使用不同的条件标志测试不同的文件系统相关属性
[ -f $var ] : 变量包含正常的文件路径或文件名,则返回真
[ -x $var ] : 变量包含的文件可执行,则返回真
[ -d $var ] : 变量包含的是目录,则返回真
[ -e $var ] : 变量包含的文件存在,则返回真
[ -c $var ] : 变量包含的是一个字符设备文件的路径,则返回真
[ -b $var ] : 变量包含的是一个块设备文件的路径,则返回真
[ -w $var ] : 变量包含的文件可写,则返回真
[ -r $var ] : 变量包含的文件可读,则返回真
[ -L $var ] : 变量包含的文件是一个符号链接,则返回真。
字符串比较 ` `.``.``.` `
使用字符串比较时,最好使用双中括号,因为有时候采用单中括号会产生错误,所以最好避开它们。
[[ $str1 = $str2 ]] 当str1等于str2时,返回真
[[ $str1 == $str2 ]] 这时检查字符串是否相等的另一种写法
[[ $str1 != $str2 ]] 如果str1不等于str2,则返回真
[[ $str1 > $str2 ]] 如果str1大于str2,则返回真
[[ $str1 < $str2 ]] 如果str1小于str2,则返回真
[[ -z $str1 ]] 如果str1包含的是空字符串,则返回真
[[ -n $str1 ]] 如果str1包含的是非空字符串,则返回真

使用逻辑运算符&& 和 || 能够很容易的将多个条件组合起来:
if [[ -n $str1 ]] && [[ -z $str2 ]];then
commands;
fi

转载于:https://blog.51cto.com/116646695/1117136

shell中的比较与测试相关推荐

  1. shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?

    每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...

  2. linux的shell的功能,linux shell中${ }的一些特异功能

    linux shell中${ }的一些特异功能,这部分内容是shell中的比较经典的部分之一,建议认真学习,深刻体会. 假设我们定义一个变量为: file=/dir1/dir2/dir3/my.fil ...

  3. shell中执行脚本并显示到终端和保存到日志文件中

    我们知道,在shell中执行脚本会返回一定信息到终端屏幕上 ,但是有一些特殊情况,如以下情况: 1)显示到终端中 echo  "abck" 以上在手动执行脚本中是可以的,如果是编写 ...

  4. shell中的IFS

    一.IFS 介绍 Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符.完整定义是The shell uses the value stored in ...

  5. linux脚本中的exit,Shell中exit和return的区别讲解

    1.exit命令 exit命令是Shell内建命令,用于退出当前Shell进程.使用格式如下: exit [] 可以指定退出状态n,n的取值范围是0-255,一般情况下,0表示正常退出,非零表示异常退 ...

  6. shell中sed命令的用法

    sed (stream editor)流编辑器也是linux中的一条命令,在shell中经常需要用到的非交互式修改文件内容的命令.sed处理文本是按行处理,也就是读一行处理一行. sed的命令基本格式 ...

  7. linux shell中的各种括号的使用方法

    在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var}  2.$(cmd)  3.()和{}  4.${var:-string},${var:+str ...

  8. linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算

    在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...

  9. 判断正则 shell_【US分享】Shell中的括号

    小U有一天想要使用shell脚本跑一段时间的脚本,写了下面一段shell语句,发现报错了,运行的时候变成了这样: 一开始以为是由于bash将0开头的数字作为8进制了,所以出现08,09这样的数字就会报 ...

  10. shell学习(17)- shell中21的解释及输入输出重定向

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准输出,默 ...

最新文章

  1. java链表list_java集合之linkedList链表基础
  2. linux下生成https的crt和key证书
  3. Response 和 Request
  4. hadoop之 参数调优
  5. 014_Vue过滤器
  6. [转]IE11下Forms身份认证无法保存Cookie的问题
  7. php excel列增加_PHP 高性能 Excel 扩展 1.2.7 发布
  8. 使用AIDL实现进程间的通信
  9. “深入浅出”是什么导致不能以操作系统用户身份连接到数据库
  10. oj交java代码_UvaOJ java输入代码
  11. 古墓新手机器人_古墓新手任务攻略 - 玩家乐园 - 北大侠客行MUD论坛 - Powered by Discuz!...
  12. 思科 Cisco DHCP中继配置
  13. 梦幻手游最新服务器,《梦幻西游》手游服务器如何选择 新区还是老区
  14. Xshell 6链接Liunx链接不上:
  15. 自从会了爬虫妈妈再也不担心我不会植物分类啦
  16. java 庖丁解牛中文分词_庖丁解牛中文分词包
  17. 灾难恢复之什么是RTORPO?
  18. 2022-2027年中国黑龙江煤炭工业市场竞争态势及行业投资前景预测报告
  19. txt文件更改成java文件
  20. 高中计算机会考试题考哪些,高中会考考哪几科

热门文章

  1. 一个前端小白的成长之路(序)
  2. Poj 2187 旋转卡壳
  3. TortoiseGit-创建分支、合并分支
  4. 从华住遭遇“抄袭” 看酒店行业互联网发展现状
  5. PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql环境教程以及注意事项
  6. mpls--通过全局路由表和静态路由的因特网接入
  7. spring 中事物的说明
  8. 远程桌面无法连接方案
  9. 如何记才能不搞混绝对路径和相对路径
  10. UGUI是如何频繁访问Image/Text等组件的raycastTarget的(读源码有感)