zoukankan      html  css  js  c++  java
  • Shell 中expr的使用

    1.expr命令一般用于整数值,其一般格式为:
    expr argument operator argument
    一般的用法是使用expr做算术运算,如:
    [root@centos ~]# expr 10 + 20
    30
    $expr 30 / 3 / 2
    5
    (注意运算符左右都有空格 ,如果没有空格表示是字符串连接)
    使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。如:
    [root@centos ~]# expr 10 * 10   //:错误,
    expr: syntax error
    [root@centos ~]# expr 10 * 10  //正确
    100
    2.利用expr,把输出导入/dev/null,可以作判断。
    如果表达式成功,可以如下表示:
    $value=12
    $expr $value + 10 > /dev/null 2>&1
    $echo $?
    0

    如果表达式失败,返回非0值
    $value=hello
    $expr $value + 10 > /dev/null 2>&1
    $echo $?
    2
    3.expr也操作用于字符串
    字符串比较:
    expr 如果成功,返回值1,任何其他值为无效或错误。如下面的例子测试两个字符串是否相等,这里字符串为“hello”和hello”。
    $value=hello
    $expr $value = "hello"
    1
    #这时候shell的返回值为0。
    $echo $?
    0
    4.expr的模式匹配:
    关于expr模式匹配,可以使用expr通过指定冒号:选项指定要进行字符串模式匹配。 .*代表任
    何字符重复0次或多次。返回值为括号中的内容.
    如在tomcat的catalina.sh,使用了expr的模式匹配来获取连接文件的真实路径,例子如下:
    # resolve links - $0 may be a softlink
    PRG="$0" 
    while [ -h "$PRG" ]; do
      ls=`ls -ld "$PRG"`
      link=`expr "$ls" : '.*-> .$'`   #这里expr的返回值为连接文件的真实路径
      if expr "$link" : '/.*' > /dev/null; then #路径名返回1
        PRG="$link"
      else
        PRG=`dirname "$PRG"`/"$link"
      fi
    done

  • 相关阅读:
    读《程序是怎样跑起来的》第七章有感
    读《程序是怎样跑起来的》第六章有感
    读《程序是怎样跑起来的》第五章有感
    读《程序是怎样跑起来的》第四章有感
    读《程序是怎样跑起来的》第三章有感
    读《怎样成为一个高手 183》有感
    读《程序是怎样跑起来的》第二章有感
    《程序是怎样跑起来的》第一章读后感
    我与计算机
    师生关系
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/6080118.html
Copyright © 2011-2022 走看看