- 算术运算符

算术运算符,常用的有+-*/%++--**

  • + - 加法运算符

    [root@www ~]$ expr 1 + 1
    2
    [root@www ~]$ echo $(( 1 + 1 ))
    2
  • - - 减法运算符

    [root@www ~]$ expr 1 - 1
    0
    [root@www ~]$ echo $(( 1 - 1 ))
    0
  • * - 乘法运算符

    [root@www ~]$ expr 2 \* 2
    4
    [root@www ~]$ echo $(( 2 * 2 ))
  • / - 除法运算符

    [root@www ~]$ expr 2 \/ 2
    1
    [root@www ~]$ echo $(( 2 / 2 ))
    1
  • % - 取余运算符

    [root@www ~]$ expr 2 % 2
    0
    [root@www ~]$ echo $(( 10 % 2 ))
    0
  • ** - 幂运算符

    [root@www ~]$ echo $(( 2 ** 4 ))
    16
  • ++ - 增加运算符

    [root@www ~]$ variable=0
    [root@www ~]$ (( variable++ ))
    [root@www ~]$ echo $variable
    1
    #-------------------------------------
    [root@www ~]$ variable=0
    [root@www ~]$ let variable++
    [root@www ~]$ echo $variable
    1
  • -- - 减少运算符

    [root@www ~]$ variable=100
    [root@www ~]$ (( variable-- ))
    [root@www ~]$ echo $variable
    99
    #------------------------------------
    [root@www ~]$ variable=100
    [root@www ~]$ let variable--
    [root@www ~]$ echo $variable
    99

- 关系运算符

关系运算符,常用的有<<=>>====!=

  • < - 小于运算符

    [root@www ~]$ echo $(( 1 < 2 ))
    1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ (( 1 < 2 ));echo $?
    0 # 返回值为0表示(tree),返回值为1表示(false) [root@www ~]$ [[ 1 < 2 ]];echo $?
    0 # 返回值为0表示(true),返回值为1表示(false)
  • <= - 小于或等于运算符

    [root@www ~]$ echo $(( 1 <= 2 ))
    1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ (( 1 < 2 ));echo $?
    0 # 返回值为0表示(tree),返回值为1表示(false)
  • > - 大于运算符

    [root@www ~]$ echo $((1 > 2))
    1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 > 2));echo $?
    0 # 返回值为0表示(tree),返回值为1表示(false) [root@www ~]$ [[ 1 > 2 ]];echo $?
    0 # 返回值为0表示(true),返回值为1表示(false)
  • >= - 大于或等于运算符

    [root@www ~]$ echo $((1 >= 2))
    1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 >= 2));echo $?
    0 # 返回值为0表示(tree),返回值为1表示(false)
  • = - 等于运算符

    [root@www ~]$ [ "word" = "word" ];echo $?
    # 该行为是进行字符串比较
    [root@www ~]$ [[ "word" = "word" ]];echo $?
    # 该行为是进行字符串比较
  • == - 等于运算符

    [root@www ~]$ expr 1 == 1
    1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ echo $((1 == 1))
    1 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 == 1));echo $?
    0 # 返回值为0表示(true),返回值为1表示(false) [root@www ~]$ [[ 1 == 1 ]];echo $?
    0 # 返回值为0表示(true),返回值为1表示(false)
  • != - 不等于运算符

    [root@www ~]$ expr 1 != 1
    0 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ echo $((1 != 1))
    0 # 返回值为0表示(false),返回值为1表示(true) [root@www ~]$ ((1 != 1));echo $?
    1 # 返回值为0表示(true),返回值为1表示(false) [root@www ~]$ [[ 1 != 1 ]];echo $?
    1 # 返回值为0表示(true),返回值为1表示(false)

- 逻辑运算符

逻辑运算符,常用的有&&||!

  • && - 逻辑与运算符

    [root@www ~]$ make && make install
    # 只有当make命令成功执行时,才会执行后面的语句
    [root@www ~]$ [ -f /etc/passwd -a -d /etc ];echo $?
    # -a 等同于 &&
  • || - 逻辑或运算符

    [root@www ~]$ make || echo "Make failed !"
    # 当make执行失败时,才会执行后面的语句
    [root@www ~]$ [ -f /etc/passwd -o -d /etc];echo $?
    # -o 等同于 ||
  • ! - 逻辑非运算符

    [root@www ~]$ [ 1 -eq 1 ];echo $?
    0
    [root@www ~]$ [ ! 1 -eq 1 ];echo $?
    1
    # !真 = 假 , !假 = 真
    # 也就是将结果取反,如果表达式为0则返回1,为1则返回0、

- 按位运算符

按位运算符,常用的有&|^~<<>>

  • & - 按位与运算符

    [root@www ~]$ echo $((0 & 0))
    0
    [root@www ~]$ echo $((0 & 1))
    0
    [root@www ~]$ echo $((1 & 0))
    0
    [root@www ~]$ echo $((1 & 1))
    1
    # 由此得出,只有当两边的值都为true时,结果才为true
  • | - 按位或运算符

    [root@www ~]$ echo $(( 0 | 0 ))
    0
    [root@www ~]$ echo $(( 0 | 1 ))
    1
    [root@www ~]$ echo $(( 1 | 0 ))
    1
    [root@www ~]$ echo $(( 1 | 1 ))
    1
    # 由此得出,只要有一个值为true,则结果为true
  • ^ - 异或运算符

    [root@www ~]$ echo $(( 0 ^ 0 ))
    0
    [root@www ~]$ echo $(( 0 ^ 1 ))
    1
    [root@www ~]$ echo $(( 1 ^ 0 ))
    1
    [root@www ~]$ echo $(( 1 ^ 1 ))
    0 #-----------------------------------------------
    # 异或是运算二进制,两个值进行运算,同号为0,异号为1,例如:
    [root@www ~]$ echo $((99^88)) # 开始运算,异或后为59,为什么?
    59 # 这里为运算的过程,99和88进行异或,如果两个都是一样的就是0,不一样就是1
    [root@www ~]$ echo "obase=2;ibase=10;99"|bc # 得出99的二进制
    1011000
    [root@www ~]$ echo "obase=2;ibase=10;88"|bc # 得出88的二进制
    1100011
    # 99 = 1011000
    # 88 = 1100011
    # 59 = 0111011 # 此处为上面两个二进制运算后的结果,
    [root@www ~]$ echo "obase=10;ibase=2;0111011"|bc
    59
    # 最终结果是正确的,常用于互换两个变量的值,但该值一定是整数
  • ~ - 取反运算符

    [root@www ~]$ echo $(( ~9 ))
  • << - 左移运算符

    [root@www ~]$ echo $((1<<2))
  • >> - 右移运算符

    [root@www ~]$ echo $((2>>1))

- 文件测试符

文件测试有很多,如下:

-n - 检测字符长度是否为0,不为0则返回true

-z - 检测字符长度是否为0,为0则返回true

-eq - 等于

-ge - 大于等于

-gt - 大于

-le - 小于等于

-lt - 小于

-ne - 不等于

-ef - 判断 file1file2 是否具有相同的设备和inode编号

-nt - 判断 filefile2 哪一个文件比较新

-ot - 判断 filefile2 哪一个文件比较旧

-b - 判断文件是否存在,并且是块设备文件

-c - 判断文件是否存在,并且是字符设备文件

-d - 判断文件是否存在,并且是目录

-e - 判断文件是否存在

-f - 判断文件是否存在,并且是普通文件

-g - 判断文件是否存在,并且设置了SGID位

-G - 判断文件是否存在,并且GID有效

-h - 判断文件是否存在,并且是一个符号链接(与-L相同)

-k - 判断文件是否存在,并且设置了粘着位

-L - 判断文件是否存在,并且是一个符号链接(与-h相同)

-O - 判断文件是否存在,并且UID有效

-p - 检测文件是否存在,并且具备命名管道

-r - 判断文件是否存在,并且具备读权限

-s - 判断文件是否存在,并且大小大于0

-S - 判断文件是否存在,并且是一个套接字

-t - 文件描述符是在一个终端打开的

-u - 判断文件是否存在,并且设置了SUID位

-w - 判断文件是否存在,并且具备写权限

-x - 判断文件是否存在,并且具备执行权限


Linux 各种运算符的更多相关文章

  1. Linux Shell 运算符

    Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 逻辑运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 ...

  2. Linux shell运算符

    双引号 --使用双引号可以引用除了字符$,`(单反号),\(反斜杠)外的任意字符或者字符串 --echo "参数的个数是$#" 单引号 --单引号与双引号类似,不同的是shell会 ...

  3. 【转】Awk 命令学习总结、AWk命令系列学习(linux shell)

    前面的话 学习linux 的同人,都知道linux shell文本处理能力非常强大.有一组强大的文本处理工具:grep,sed,awk . 其中grep 经常用作查找匹配文本.sed用作文本编辑替换. ...

  4. Awk 命令学习总结、AWk命令系列学习(linux shell)

    AWK基本语法 下面没有提到awk命令怎么使用了,你可以通过 运行:awk –h 查询到所有命令及参数!下面把awk作为一门语言分节介绍. linux awk 内置变量使用介绍   awk语言中,怎么 ...

  5. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  6. 如何在Linux中结合示例使用'cat'和'tac'命令

    上一篇我们讲到了cat的使用示例:https://www.cnblogs.com/WeiLian1024/p/11863057.html 本篇我们将继续延续Cat讲讲Tac 本文是我们讲讲Linux技 ...

  7. C学习笔记(八)字符输入输出和输入确认

    缓冲区 缓冲区分为两类:完全缓冲(fully buffered)I/O和行缓冲(line-buffered)I/O.完全缓冲在缓冲区满时被清空(内容被发送至目的地).这种类型常出现在文件输入中.缓冲区 ...

  8. Python自学知识点----Day01

    Linux 次方运算符** 操作系统:1).直接操纵硬件 2).将操纵硬件封装成系统调用,利用应用程序进行调用 操作系统:windows  用户群体大 macos      适用开发人员 Linux  ...

  9. linux shell “(())” 双括号运算符使用

    导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格 ...

随机推荐

  1. C#系列之{流和序列化}

    不论何种类型的文件都可以表示为一个字节数组.(Byte[]) 一.文件复制 (示例) 首先建立一个类似管道的东西将文件和内存中的程序连接,并将文件按字节发送.为了保存接收到的文件字节,需要创建一个字节 ...

  2. Using Spring.net in console application

    Download Spring.net in http://www.springframework.net/ Install Spring.NET.exe Create a console appli ...

  3. spring-事件通知实现

    ok,今天不知道看啥来着,突然想起来spring内部的事件通知的实现,其实比较简单,简要记一下.然后又回顾了下eventbus的实现,其实俩者的实现方式大同小异吧,只是spring的很多操作都可以直接 ...

  4. 02:OC和C对比

    1.源文件对比 C语言中常见源文件.h头文件,.c文件 文件扩展名 源类型 .h 头文件,用于存放函数声明 .c C语言源文件,用于实现头文件中声明的方法 OC中的源文件.h头文件,.m与.mm的实现 ...

  5. linux 三剑客之awk

    #AWK命令 基础显示 打印install.log文件中包含data字段行的第二区域 awk '/data/ {print $2}' install.log 查看num10.txt的第一行 head ...

  6. Rabbit MQ 入门指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  7. 浏览器标识ua

    # LinuxLinux / Firefox 29: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0Linux ...

  8. Android逆向进阶—— 脱壳的奥义(基ART模式下的dump)

    本文作者:i春秋作家HAI_ZHU 0×00 前言 市面上的资料大多都是基于Dalvik模式的dump,所以这此准备搞一个ART模式下的dump.HAI_的使用手册(各种好东西) Dalvik模式是A ...

  9. 大众点评Cat--架构分析

    转自:http://blog.csdn.net/szwandcj/article/details/51025669 Cat功能强大且多,光日志的报表和图表分析就有十几种,但文档却很少,寥寥无几找到一些 ...

  10. Docker Compose模板文件介绍

    模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多,这里面大部分指令跟 docker run 相关参数的含义都是类似的.默认的模板文件名称为 docker-compose.yml ,格 ...