Linux 各种运算符

目录

  • - 算术运算符
  • - 关系运算符
  • - 逻辑运算符
  • - 按位运算符
  • - 文件测试符

- 算术运算符

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

  • + - 加法运算符

    [[email protected] ~]$ expr 1 + 1
    2
    [[email protected] ~]$ echo $(( 1 + 1 ))
    2
  • - - 减法运算符
    [[email protected] ~]$ expr 1 - 1
    0
    [[email protected] ~]$ echo $(( 1 - 1 ))
    0
  • * - 乘法运算符
    [[email protected] ~]$ expr 2 \* 2
    4
    [[email protected] ~]$ echo $(( 2 * 2 ))
  • / - 除法运算符
    [[email protected] ~]$ expr 2 \/ 2
    1
    [[email protected] ~]$ echo $(( 2 / 2 ))
    1
  • % - 取余运算符
    [[email protected] ~]$ expr 2 % 2
    0
    [[email protected] ~]$ echo $(( 10 % 2 ))
    0
  • ** - 幂运算符
    [[email protected] ~]$ echo $(( 2 ** 4 ))
    16
  • ++ - 增加运算符
    [[email protected] ~]$ variable=0
    [[email protected] ~]$ (( variable++ ))
    [[email protected] ~]$ echo $variable
    1
    #-------------------------------------
    [[email protected] ~]$ variable=0
    [[email protected] ~]$ let variable++
    [[email protected] ~]$ echo $variable
    1
  • -- - 减少运算符
    [[email protected] ~]$ variable=100
    [[email protected] ~]$ (( variable-- ))
    [[email protected] ~]$ echo $variable
    99
    #------------------------------------
    [[email protected] ~]$ variable=100
    [[email protected] ~]$ let variable--
    [[email protected] ~]$ echo $variable
    99

- 关系运算符

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

  • < - 小于运算符

    [[email protected] ~]$ echo $(( 1 < 2 ))
    1   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ (( 1 < 2 ));echo $?
    0   # 返回值为0表示(tree),返回值为1表示(false)
    
    [[email protected] ~]$ [[ 1 < 2 ]];echo $?
    0   # 返回值为0表示(true),返回值为1表示(false)
    
  • <= - 小于或等于运算符
    [[email protected] ~]$ echo $(( 1 <= 2 ))
    1   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ (( 1 < 2 ));echo $?
    0   # 返回值为0表示(tree),返回值为1表示(false)
  • > - 大于运算符
    [[email protected] ~]$ echo $((1 > 2))
    1   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ ((1 > 2));echo $?
    0   # 返回值为0表示(tree),返回值为1表示(false)
    
    [[email protected] ~]$ [[ 1 > 2 ]];echo $?
    0   # 返回值为0表示(true),返回值为1表示(false)
  • >= - 大于或等于运算符
    [[email protected] ~]$ echo $((1 >= 2))
    1   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ ((1 >= 2));echo $?
    0   # 返回值为0表示(tree),返回值为1表示(false)
  • = - 等于运算符
    [[email protected] ~]$ [ "word" = "word" ];echo $?
    # 该行为是进行字符串比较
    [[email protected] ~]$ [[ "word" = "word" ]];echo $?
    # 该行为是进行字符串比较
  • == - 等于运算符
    [[email protected] ~]$ expr 1 == 1
    1   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ echo $((1 == 1))
    1   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ ((1 == 1));echo $?
    0   # 返回值为0表示(true),返回值为1表示(false)
    
    [[email protected] ~]$ [[ 1 == 1 ]];echo $?
    0   # 返回值为0表示(true),返回值为1表示(false)
  • != - 不等于运算符
    [[email protected] ~]$ expr 1 != 1
    0   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ echo $((1 != 1))
    0   # 返回值为0表示(false),返回值为1表示(true)
    
    [[email protected] ~]$ ((1 != 1));echo $?
    1   # 返回值为0表示(true),返回值为1表示(false)
    
    [[email protected] ~]$ [[ 1 != 1 ]];echo $?
    1   # 返回值为0表示(true),返回值为1表示(false)

- 逻辑运算符

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

  • && - 逻辑与运算符

    [[email protected] ~]$ make && make install
    # 只有当make命令成功执行时,才会执行后面的语句
    [[email protected] ~]$ [ -f /etc/passwd -a -d /etc ];echo $?
    # -a 等同于 &&
  • || - 逻辑或运算符
    [[email protected] ~]$ make || echo "Make failed !"
    # 当make执行失败时,才会执行后面的语句
    [[email protected] ~]$ [ -f /etc/passwd -o -d /etc];echo $?
    # -o 等同于 ||
  • ! - 逻辑非运算符
    [[email protected] ~]$ [ 1 -eq 1 ];echo $?
    0
    [[email protected] ~]$ [ ! 1 -eq 1 ];echo $?
    1
    # !真 = 假 , !假 = 真
    # 也就是将结果取反,如果表达式为0则返回1,为1则返回0、

- 按位运算符

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

  • & - 按位与运算符

    [[email protected] ~]$ echo $((0 & 0))
    0
    [[email protected] ~]$ echo $((0 & 1))
    0
    [[email protected] ~]$ echo $((1 & 0))
    0
    [[email protected] ~]$ echo $((1 & 1))
    1
    # 由此得出,只有当两边的值都为true时,结果才为true
  • | - 按位或运算符
    [[email protected] ~]$ echo $(( 0 | 0 ))
    0
    [[email protected] ~]$ echo $(( 0 | 1 ))
    1
    [[email protected] ~]$ echo $(( 1 | 0 ))
    1
    [[email protected] ~]$ echo $(( 1 | 1 ))
    1
    # 由此得出,只要有一个值为true,则结果为true
  • ^ - 异或运算符
    [[email protected] ~]$ echo $(( 0 ^ 0 ))
    0
    [[email protected] ~]$ echo $(( 0 ^ 1 ))
    1
    [[email protected] ~]$ echo $(( 1 ^ 0 ))
    1
    [[email protected] ~]$ echo $(( 1 ^ 1 ))
    0
    
    #-----------------------------------------------
    # 异或是运算二进制,两个值进行运算,同号为0,异号为1,例如:
    [[email protected] ~]$ echo $((99^88))   # 开始运算,异或后为59,为什么?
    59
    
    # 这里为运算的过程,99和88进行异或,如果两个都是一样的就是0,不一样就是1
    [[email protected] ~]$ echo "obase=2;ibase=10;99"|bc     # 得出99的二进制
    1011000
    [[email protected] ~]$ echo "obase=2;ibase=10;88"|bc     # 得出88的二进制
    1100011
    # 99 = 1011000
    # 88 = 1100011
    # 59 = 0111011  # 此处为上面两个二进制运算后的结果,
    [[email protected] ~]$ echo "obase=10;ibase=2;0111011"|bc
    59
    # 最终结果是正确的,常用于互换两个变量的值,但该值一定是整数
  • ~ - 取反运算符
    [[email protected] ~]$ echo $(( ~9 ))
  • << - 左移运算符
    [[email protected] ~]$ echo $((1<<2))
  • >> - 右移运算符
    [[email protected] ~]$ 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 各种运算符

原文地址:https://www.cnblogs.com/liuhedong/p/10356155.html

时间: 2024-11-09 22:51:36

Linux 各种运算符的相关文章

linux 比较运算符

linux shell 编程中使用到得if语句内判断参数 –b 当file存在并且是块文件时返回真 -c 当file存在并且是字符文件时返回真 -d 当pathname存在并且是一个目录时返回真 -e 当pathname指定的文件或目录存在时返回真 -f 当file存在并且是正规文件时返回真 -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真 -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效 -k 当由pathname指定的文件或目录存在并且设置

合并_01php基础语法(8days)笔记

一.入门指引 1.php是什么? PHP是什么? Hypertext Preprocessor,超文本预处理器 Personal Home Page,个人主页 是一种在服务器端执行的脚本语言,可嵌入到 HTML中,尤其适合 web 开发. ? php可以做什么? 网站,web程序 B/S架构 ? ? 命令行脚本 桌面应用程序 ? ? 二.安装Apache 制作一台服务器,来提高网页服务,只要安装了一个能提供网页服务的软件的电脑,就可以称之为网页服务器. 常见的网页服务器软件 Apache IIS

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

导读 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展. 使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等. 2.在双括号结构中,所有变量

嵌入式linux C++语言(六)——运算符重载

嵌入式linux C++语言(六)--运算符重载 运算符重载的本质是函数重载. 一.重载基础 1.运算符重载的语法 返值类型 operator 运算符名称(形参表列){    重载实体;} 2.友元重载 可以将运算符重载函数声明位友元函数 #include <iostream> using namespace std; class Complex { public:     Complex(float x=0, float y=0)         :_x(x),_y(y){}     voi

Linux 之 shell 比较运算符

运算符 描述 示例 文件比较运算符 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ] -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ] -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ] -r filename 如果 fil

linux shell &ldquo;(())&rdquo; 双括号运算符使用

linux shell "(())" 双括号运算符使用 在刚开始学习inux shell脚本编程时候,对于它的 四则运算以及逻辑运算.估计很多朋友都感觉比较难以接受.特变逻辑运算符"[]"使用时候,必须保证运算符与算数 之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展.   使用方法: 语法: ((表达式1,表达式2-)) 特点: 1.在双括号结构中,所有表

linux运算符学习1

linux运算符 本文搬运自https://blog.csdn.net/zhuzige521888/article/details/78457031 1. 逻辑的(and)与(or) &&   逻辑的 AND 的意思, -a 也是这个意思 ||  逻辑的 OR 的意思, -o 也是这个意思 不同的场合会限制用法 2.运算符相关 运算符号代表意义 =  等于  应用于:整型或字符串比较 如果在[] 中,只能是字符串 !=  不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串 &l

Linux mysql shell脚本 变量和环境变量 位置参数 预定义变量 运算符 判断 流程控制 for循环 与用户交互 函数

mysql 1. 卸载旧版本 rpm -qa | grep mysql 检查是否有旧版本 查询结果:mysql-libs-5.1.73-7.el6.x86_64 rpm -e mysql-libs 删除旧版本 rpm -e --nodeps mysql-libs 强行删除 2. 安装mysql 2.1 安装源码需要编译 下载c的编译工具 yum -y install make gcc-c++ cmake bison-devel ncurses-devel 2.2 xftp连接上传 xftp连接上

linux学习之shell脚本 ------- 引用与运算符

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 变量和替换操作,在脚本中执行变量替换时最容易犯的一个错误就是引用错误,所以有必要看一下各种引号的代表的意义与作用. 引用: 双引号" " 使用双引号可引用除字符$.`.\ 外的任意字符或字符串.如下所示: [email protected]:~/develop/workspace/shell_workspace$ echo -e "hello $SHEL