基本运算符

算术运算符

val = expr 2 + 2

需要注意的是

  • 表达式和运算符之间需要有空格(比如2 + 2,不能是2+2)
  • 两边最外面的字符是`,在esc键下面,不是引号哦
  • 乘号* 前面必须加上反斜杠 \ 才能实现乘法效果,比如 `expr $a \* $b`
  • 条件表达式(判断语句)要放在方括号之间,并且要有空格
  • 条件语句为 if...then...else...fi

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值都是数字

header 运算符 header 说明
-eq equal,检测两个数是否相等,相等返回true
-ne not equal,检测两个数是否不相等,不想等则返回true
-gt great then,检测左边的数是否大于右边的数,如果是则返回true
-lt less then,检测左边的数是否小于右边的数,如果是则返回true
-ge great equal,检测左边的数是否大于等于右边的数,如果是则返回true
-le less equal,检测左边的数是否小于等于右边的数,如果是则返回true

注意的是:

  • 运算符有个-,不要漏掉了

布尔运算符

header 运算符 header 说明
! 非运算符
-o 或运算
-a 与运算

例子:

if [ $a -lt 5 -o $b -gt 100 ]

逻辑运算符

header 运算符 header 说明
&& 逻辑的AND

例子:

if [[ $a -lt 100 || $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi

注意的是:

  • 多了个[ ]

字符串运算符

header 运算符 header 说明
= 检测两个字符串是否相等,相等的话则返回true
!= 检测两个字符串是否不相等,不相等则返回true
-z zero,检测字符串是否为0,为0则返回true
-n not zero,检测字符串是否不为0,不为0则返回true
str 检测字符串是否为空,不为空则返回true
  • 除了 = 和 != 是放在两个字符串变量之间,其它运算符均放在字符串的前面,比如 if [ -z $a ]

文件测试运算符

只选了部分比较常用的文件测试运算符

header 运算符 header 说明
-d file 检测文件是否是目录,如果是,则返回 true
-r file read,检测文件是否可读,如果是,则返回 true
-w file write,检测文件是否可写,如果是,则返回 true
-x file excute,检测文件是否可执行,如果是,则返回 true
-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true
-e file 检测文件(包括目录)是否存在,如果是,则返回 true

例子:

file="/var/www/runoob/test.sh"

if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
  • read 用于输入
  • 初次声明变量的时候不需要使用$,后面使用的时候才加上$

Shell 学习笔记之运算符的更多相关文章

  1. shell学习笔记

    shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...

  2. [转帖][Bash Shell] Shell学习笔记

    [Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html  阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...

  3. shell学习笔记汇总

    1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...

  4. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  5. shell 学习笔记2-shell-test

    一.字符串测试表达式 前面一篇介绍:什么是shell,shell变量请参考: shell 学习笔记1-什么是shell,shell变量 1.字符串测试表达式参数 字符串需要用""引 ...

  6. SHELL学习笔记三

    SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...

  7. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

  8. shell学习笔记2: shell中的四则运算符

    shell中的四则运算符 n1,n2 :常量数字 char:运算符号 加,减,乘,除,取余(+,-,*,/,%) $a,$b:变量a,变量b 方法1 数字与符号之间需要有空格 不支持小数 expr n ...

  9. C++学习笔记之运算符重载

    一.运算符重载基本知识 在前面的一篇博文 C++学习笔记之模板(1)——从函数重载到函数模板 中,介绍了函数重载的概念,定义及用法,函数重载(也被称之为函数多态)就是使用户能够定义多个名称相同但特征标 ...

随机推荐

  1. Framebuffer 驱动学习总结(一) ---- 总体架构及关键结构体

    一.Framebuffer 设备驱动总体架构 帧缓冲设备为标准的字符型设备,在Linux中主设备号29,定义在/include/linux/major.h中的FB_MAJOR,次设备号定义帧缓冲的个数 ...

  2. Hash 分布均衡算法

    1.移位实现 public static int GetIndex(string str, int count) { , (current, c) => (current << ) ...

  3. 你真的了解js伪数组吗?深入js伪数组

    关于js伪数组 具有length属性: 按索引方式存储数据: 不具有数组的push().pop()等方法: 你可能知道怎么把伪数组转换为数组,但是你知道这里边的原理吗? 假如页面有一组li元素 < ...

  4. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  5. Web 2.0应用客户端性能问题十大根源《转载》

    前言 Web 2.0应用的推广为用户带来了全新的体验,同时也让开发人员更加关注客户端性能问题.最近,资深Web性能诊断专家.知名工具dynatrace的创始人之一Andreas Grabner根据自己 ...

  6. group by 和 distinct 去重比较

    distinct方式就是两两对比,需要遍历整个表.group by分组类似先建立索引再查索引,所以两者对比,小表destinct快,不用建索引.大表group by快.一般来说小表就算建索引,也不会慢 ...

  7. 基于docker 搭建Prometheus+Grafana

    一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...

  8. Java工程师知识图谱

    一.Java工程师知识图谱(思维导图版) 二.Java工程师知识图谱(图文版) 三.Java工程师知识图谱(文字版) http://note.youdao.com/noteshare?id=615da ...

  9. servlet 学习笔记(三)

    同一用户的不同页面共享数据有以下四种方法: 1.sendRedirect()跳转 2.session技术 3.隐藏表单提交(form) 4. cookie技术(小甜饼) --------------- ...

  10. Session机制二(简易购物车案例)

    一:案例一(简易购物车) 1.目录结构 2.step1.jsp <%@ page language="java" contentType="text/html; c ...