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
  • 相关阅读:
    codeforces 980A Links and Pearls
    zoj 3640 Help Me Escape
    sgu 495 Kids and Prizes
    poj 3071 Football
    hdu 3853 LOOPS
    hdu 4035 Maze
    hdu 4405 Aeroplane chess
    poj 2096 Collecting Bugs
    scu 4444 Travel
    zoj 3870 Team Formation
  • 原文地址:https://www.cnblogs.com/kelamoyujuzhen/p/9821785.html
Copyright © 2011-2022 走看看