原文出处:https://www.jianshu.com/p/855c9fb373ff

Shell 里面的方括号(包括单中括号与双中括号)可用于以下三种情况的判断:

  1. 算术比较。 比如一个变量是否为0, [ $var -eq 0 ]

  2. 文件属性测试。比如一个文件是否存在,[ -e $var ], 是否是目录,[ -d $var ]

  3. 字符串比较。 比如两个字符串是否相同, [[ $var1 = $var2 ]]

[] 常常可以使用 test 命令来代替,后面有介绍。

算术比较

对变量或值进行算术条件判断:

[ $var -eq 0 ]  # 当 $var 等于 0 时,返回真
[ $var -ne 0 ] # 当 $var 不等于 0 时,返回真

需要注意的是 [ ] 与操作数之间一定要有一个空格,否则会报错。比如下面这样就会报错:

[$var -eq 0 ]  或 [ $var -ne 0]

其他比较操作符:

可以通过 -a (and) 或 -o (or) 结合多个条件进行测试:

[ $var1 -ne 0 -a $var2 -gt 2 ]  # 使用逻辑与 -a
[ $var1 -ne 0 -o $var2 -gt 2 ] # 使用逻辑或 -o

文件系统属性测试

使用不同的条件标志测试不同的文件系统属性。

使用方法如下:

fpath="/etc/passwd"
if [ -e $fpath ]; then
echo File exits;
else
echo Does not exit;
fi

字符串比较

在进行字符串比较时,最好使用双中括号 [[ ]]. 因为单中括号可能会导致一些错误,因此最好避开它们。

检查两个字符串是否相同:

[[ $str1 = $str2 ]]

当 $str1 等于 $str2 时,返回真。也就是说,str1 和 str2 包含的文本是一样的。其中的单等于号也可以写成双等于号,也就是说,上面的字符串比较等效于 [[ $str1 == $str2 ]].

注意 = 前后有一个空格,如果忘记加空格, 就变成了赋值语句,而非比较关系了。

字符串的其他比较情况:

使用逻辑运算符 && 和 || 可以轻松地将多个条件组合起来, 比如:

str1="Not empty"
str2=""
if [[ -n $str1 ]] && [[ -z $str2 ]];
then
echo str1 is nonempty and str2 is empty string.
fi

test 命令也可以从来执行条件检测,用 test 可以避免使用过多的括号,[] 中的测试条件同样可以通过 test 来完成。

if [ $var -eq 0 ]; then echo "True"; fi

等价于

if test $var -eq 0; then echo "True"; fi

shell中中括号的使用的更多相关文章

  1. shell中的大括号和小括号

      1.shell中的大括号和小括号   1.${var} 2.$(cmd) 3.() 和 {} 4.${var:-string}, ${var:+string},  ${var:=string}, ...

  2. shell 中数学计算总结

    shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵.   1.错误方法举例   a)   var=1+1   echo $var  ...

  3. shell中常用的特殊符号

    在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `co ...

  4. Shell中特殊符号

    http://blog.chinaunix.net/u1/53027/showart.php?id=482234 在shell中常用的特殊符号罗列如下:# ;    ;;       .       ...

  5. shell中case的用法学习笔记

    这篇文章主要为大家介绍shell中的case语句:可以把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码. 本文转自:http://www.jbxue.com/article ...

  6. linux shell中的特殊符号

    该内容,均来自此网址(http://www.92csz.com/study/linux/12.htm).在下只是把那些命令的截图给去了. 你在学习linux的过程中,也许你已经接触过某个特殊符号,例如 ...

  7. SHELL中的特殊变量和结构

    SHELL中的特殊变量和结构 表格 B-1. 特殊的shell变量 变量 含义 $0 脚本名字 $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 $# 位置 ...

  8. shell 中的特殊符号的含义

    来源:http://blog.sina.com.cn/s/blog_62a151be0100x9rn.html 第四章 基本功 - 特殊符号 学习撰写 script 最迅速的捷径是观摩别人的 scri ...

  9. shell 中test命令

    test可用于测试表达式,支持测试的范围包括:字符串比较,算术比较,文件存在性.属性.类型等判断.例如,判断文件是否为空.文件是否存在.是否是目录.变量是否大于5.字符串是否等于"longs ...

随机推荐

  1. 2049. [SDOI2008]Cave 洞穴勘测【LCT】

    Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好 ...

  2. Sequelize-nodejs-2-basic usage

    Basic usage基本使用 To get the ball rollin' you first have to create an instance of Sequelize. Use it th ...

  3. Python自动化之ajax返回表单验证的错误信息和序列化扩展

    form内置序列化错误 如果使用form提交数据的时候,可以直接返回错误信息到模板里面进行渲染 但是如果使用ajax处理呢 from django import forms from django.f ...

  4. JDBC数据对象存储

    一:将查询的结果生成对象,储存在数组中. package day31; import java.sql.Connection; import java.sql.PreparedStatement; i ...

  5. css权威指南学习笔记--列表与生成内容

    列表属性 1.list-style-type:css2多于css2.1 2.list-style-image:有继承,子级列表会继承该图像 3.list-style-position:inside|o ...

  6. TCP\UDP客户—服务器程序设计基本框架流程图

  7. UOJ#34. 多项式乘法(NTT)

    这是一道模板题. 给你两个多项式,请输出乘起来后的多项式. 输入格式 第一行两个整数 nn 和 mm,分别表示两个多项式的次数. 第二行 n+1n+1 个整数,表示第一个多项式的 00 到 nn 次项 ...

  8. 实战三种方式部署 MySQL5.7

    作者:北京运维 常见的 MySQL 安装方式有如下三种: RPM 包方式:这种方式安装适合对数据库要求不太高的场合,安装速度快: 通用二进制包方式:安装速度相较于源码方式快,可以自定义安装目录. 源码 ...

  9. WebGl 多缓冲区传递颜色和坐标(矩形)

    效果: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  10. jQuery----操作类样式(依托开关灯案例)

    在网页开发中,元素的样式可以在style标签中定义,但是有很多案例需要添加类样式或者删除类样式,可以获取元素调用css()方法改变元素样式,但是这种方法很繁杂,本文利用开关灯案例,小结使用jquery ...