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

  • 相关阅读:
    Binary Tree Zigzag Level Order Traversal
    Binary Tree Level Order Traversal
    Symmetric Tree
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Triangle
    Populating Next Right Pointers in Each Node II
    Pascal's Triangle II
    Pascal's Triangle
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/boshen-hzb/p/6080118.html
Copyright © 2011-2022 走看看