zoukankan      html  css  js  c++  java
  • Linux 各种运算符






    - 算术运算符

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


    • + - 加法运算符

      [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 - 判断文件是否存在,并且具备执行权限




  • 相关阅读:
    宿舍助手app——个人工作第四天
    宿舍助手app——个人工作第三天
    对QQ输入法的评价
    冲刺9
    冲刺8
    冲刺7
    冲刺6
    冲刺5
    冲刺4
    冲刺3
  • 原文地址:https://www.cnblogs.com/liuhedong/p/10356155.html
Copyright © 2011-2022 走看看