• shell基础笔记2-运算与比较操作


    1、let整数运算 

      let 变量名 = 变量1 运算符 变量2

      let++

      注意let命令只能执行整数的相关运算,运算结果也只能保存整数(除法取整,其余的有小数就报错

    2、expr整数运算

      算术运算只能进行整数运算(除法取整,其余的有小数就报错),还可以进行字符串的操作

      expr expression1 操作符 expression2

      操作符 * 前必须加‘’用于转义,并且操作符和两个expression之间必须有空格(和let不同)

      expr作为外部命令要用反引号引起来

        例:res=`expr $1 * 4 +$3`

    3、bc浮点数运算

      管道的应用:variable=`echo "OPTION;OPERATIONS" | bc`,其中scale作为bc一个最重要的选项,用来指定输出小数的位数

        例:n=`echo "scale=3;13/2" | bc`

          echo $n

          结果:6.500

    4、字符串运算

      1、输出字符串长度

        法一:echo ${#str1}:输出变量$str1的长度

        法二:expr length $str1:输出变量$str1的长度

      2、取子串的操作

        法一:expr substr $string $position $length  注意位置编号从1开始

          str=“abcde123”

          expr substr $str 3 3

          结果:cde

        法二:echo ${string:$pos:$length}  注意位置编号从0开始

          str="abcde123"

          echo ${str:2:3}

          结果:cde

      3、字符串连接操作

        $str3="${str1}$str2"

        echo $str3

      4、字符串替换操作

        str="you and you and zhangsan"

        echo ${str/you/YOU}  #只替换一次

        结果:YOU and you and zhangsan

        echo ${str//you /YOU}  #全部替换

        YOU and YOU and zhangsan  

    test命令语法:test value1 -option value2 

    如果比较成功则$?为0,否则返回非0,此处用于判断操作

    5、整数比较

    大于 -gt
    小于 -lt
    大于等于 -ge
    小于等于 -le
    等于 -eq
    不等于 -ne

      

     1 #!/bin/sh
     2 #test整数比较方法
     3 a=100
     4 b=200
     5 c=100
     6 d=300
     7 #输出a,b,c,d的值
     8 echo -e "a:$a 	 b:$b	 c:$c	 d:$d"
     9 #大于比较
    10 test $b -gt $a
    11 if [$? -eq 0]
    12     then
    13         echo "b>a"
    14     else
    15         echo "b<=a"
    16 fi
    17 #大于等于比较
    18 test $b -ge $a
    19 if [$? -eq 0]
    20     then
    21         echo "b>=a"
    22     else
    23         echo "b<a"
    24 fi
    25 #不等于比较
    26 test $d -ne 400
    27 if [$? -eq 0]
    28     then 
    29         echo "d!=400"
    30      else
    31         echo "d=400"
    32 fi

    6、字符串比较

    测试空字符串 -z
    测试字符串的长度为非零 -n
    等于某一个字符串 =
    不等于某一个字符串 !=

      test -z $str1  $str1字符串为空,则返回值$?为0

      test -n $str2  $str2长度不为0,则返回值$?为0

      test $str3 = $str4  字符串相等则返回值$?为0

      test $str5 != $str6  字符串不相等则返回值$?为0

    7、逻辑比较

    逻辑与 -a
    逻辑或 -o
    逻辑非 !

      test $# -eq 1 -a $1 -eq 100  输入的参数个数为1且第一个参数为100。$#:变量个数,$1:第一个参数

      test $# -ge 1 -o $1 -eq 100  输入的参数个数大于等于1或第一个参数为100

    8、文件比较

    文件存在并且是一个常规文件 -f
    文件不为空 -s
    文件可读 -r
    文件可写(修改) -w
    文件可运行 -x
    文件是一个目录名 -d
    文件是一个符号链接 -h
    文件名引用一个字符设备 -c
    文件名引用一个块文件 -b
    套接口文件 -s
    符号链接文件 -l

    常规文件:-rwxrwxrwx. 1 root root  395 Apr  9 22:26 a.txt

    目录文件:drwxr-xr-x. 2 root root 4096 Apr  9 23:27 ss

    字符设备或块设备文件:crw--w----

    块设备文件:brw-rw----

    套接口文件:srwxrwxrwx

    符号链接文件:lrwxrwxrwx

    test -f $filename  文件存在且为常规文件则返回值$?为0

  • 相关阅读:
    删除字符串前后的空格
    Python中定义“私有”成员变量和成员函数
    linux 线程
    进程虚拟内存模型
    守护进程
    FIFO
    linux 中的 wait 函数和 waitpid 函数
    孤儿进程和僵尸进程
    linux 中的 exec 函数族
    linux中的fork函数
  • 原文地址:https://www.cnblogs.com/guang2508/p/12709673.html
一二三 - 开发者的网上家园