zoukankan      html  css  js  c++  java
  • Linux命令——expr

    前言

    有时,在处理命令行时(特别是在处理shell脚本时),您可能会发现自己处于必须执行搜索字符串中的子字符串,查找其索引以及其他内容,或者执行比较和算术运算等情况。上述问题expr都能帮我们解决。

    expr(evaluate expressions)

    语法

    expr EXPRESSION
    expr OPTION

    参数

    --help:打印帮助信息并退出

    --version:打印版本信息并退出

    典型用法

    使用expr进行算术操作

    expr ARG1 + ARG2

    expr ARG1 - ARG2

    expr ARG1 * ARG2

    expr ARG1 / ARG2

    expr ARG1 % ARG2

    root@ubuntu:~# expr 10+2
    10+2
    root@ubuntu:~# expr 10-2
    10-2
    root@ubuntu:~# expr 10*2
    10*2
    root@ubuntu:~# expr 10 / 2
    5
    root@ubuntu:~# expr 10 % 2
    0
    View Code

    这里*需要特别注意下,由于*时shell内置操作符,所以expr计算乘法时需要转义

    root@ubuntu:~# expr 10 * 2
    expr: syntax error
    root@ubuntu:~# expr 10*2
    10*2
    root@ubuntu:~# expr 10*2
    10*2
    root@ubuntu:~# expr 10 * 2
    20
    View Code

    使用expr进行逻辑操作

    注意:|、&、<、<=、!=都需要转义

    ARG1 | ARG2

    返回ARG1和ARG2中既不是null也不是0的哪个。如果ARG1和ARG2都满足要求,则返回第一个。

    注意:|也需要使用转义

    root@ubuntu:~# export a=0
    root@ubuntu:~# export b=5
    root@ubuntu:~# expr $a | $b
    5
    root@ubuntu:~# export a=10
    root@ubuntu:~# export b=5
    root@ubuntu:~# expr $a | $b
    10
    View Code

    ARG1 & ARG2

    ARG1和ARG2都不是null 或 0时,返回ARG1。ARG1和ARG2中至少有一个时null 或 0时时,返回0

    注意:&也需要使用转义

    root@ubuntu:~# export a=10
    root@ubuntu:~# export b=0
    root@ubuntu:~# expr $a & $b
    0
    root@ubuntu:~# export a=0
    root@ubuntu:~# export b=10
    root@ubuntu:~# expr $a & $b
    0
    root@ubuntu:~# export a=10
    root@ubuntu:~# export b=5
    root@ubuntu:~# expr $a & $b
    10
    View Code

    ARG1 < ARG2

    root@ubuntu:~# export a=10
    root@ubuntu:~# export b=5
    root@ubuntu:~# expr $a < $b
    0
    root@ubuntu:~# expr $b < $a
    1
    View Code

    ARG1 <= ARG2

    root@ubuntu:~# export a=10
    root@ubuntu:~# export b=5
    root@ubuntu:~# expr $a <= $b
    0
    root@ubuntu:~# expr $a <= $b+5
    1
    root@ubuntu:~# expr $a <= $b+6
    1
    View Code

    ARG1 = ARG2

    root@ubuntu:~# export a=10
    root@ubuntu:~# export b=10
    root@ubuntu:~# expr $a = $b
    1
    root@ubuntu:~# expr $a = $b
    1
    root@ubuntu:~# expr $a = $b+1
    0
    root@ubuntu:~# expr $a = $b+1
    0
    View Code

    这个还比较奇怪,=使用转义也可以,不使用也可以

    ARG1 != ARG2

    ARG1 >= ARG2

    ARG1 > ARG2

    使用expr进行字符串相关操作

    expr命令还允许您执行多个与字符串相关的操作。例如,要查找字符串的长度,可以按以下方式使用该工具:

    计算字符串长度

    注:包含空格时需要转移

    root@ubuntu:~# expr length hello
    5
    root@ubuntu:~# expr length hello world
    11
    View Code

    提取给定字符串中的子字符串

    语法:expr substr [string] [pos] [length]

    root@ubuntu:~# expr substr we are family 8 6
    family
    View Code

    查找给定字符串中一组字符的起始位置

    语法:expr index [string] [chars]

    root@ubuntu:~# expr index RNG NB NG
    2
    View Code
  • 相关阅读:
    java.lang.OutOfMemoryError: Java heap space错误及处理办法
    JQuery 引发两次$(document.ready)事件
    用Jquery动态append方式加入标签时Css样式丢失的解决方法
    操作系统第6次实验报告:使用信号量解决进程互斥访问
    操作系统实验五:文件系统
    操作系统第4次实验报告:文件系统
    操作系统第三次实验报告:管道
    操作系统第2次实验报告:创建进程
    OS第1次实验报告:熟悉使用Linux命令和剖析ps命令
    第四次实验报告:使用Packet tracer理解RIP路由协议
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9821785.html
Copyright © 2011-2022 走看看