zoukankan      html  css  js  c++  java
  • shell expr的用法

    root@tcx4440-03:~# var=$var+1
    root@tcx4440-03:~# echo $var
    3+1

    要想达到预期结果,用下列三种方法:

    (1)let "var+=1"

    (2)var=$[$var+1] 

    (3)var=`expr $var + 1`#注意加号两边的空格,否则还是按照字符串的方式赋值。

    expr命令一般用于整数值,但也可用于字符串。一般格式为:
    expr argument operator argument

    (1)
    root@tcx4440-03:~# expr 30 + 30
    60
    root@tcx4440-03:~# expr 30 * 2
    60

    (注意运算符左右都有空格
    ,如果没有空格表示是字符串连接)
    使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。

    (2)

    这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入dev/null,
    然后测试最后命令状态,如果为0,证明这是一个数,其他则表明为非数值。
    $value=12
    $expr $value + 10 > /dev/null 2>&1
    $echo $?
    0
    这是一个数。
    $value=hello
    $expr $value + 10 > /dev/null 2>&1
    $echo $?
    2
    这是一个非数值字符。

    expr也可以返回其本身的退出状态,不幸的是返回值与系统最后退出命令刚好相反,成
    功返回1,任何其他值为无效或错误。下面的例子测试两个字符串是否相等,这里字符串为
    “hello”和“hello”。
    $value=hello
    $expr $value = "hello"
    1
    $echo $?
    0

    expr返回1。不要混淆了,这表明成功。现在检验其最后退出状态,返回0表示测试成功,
    “hello”确实等于“hello”。

    (3)expr 的字符串操作

    提取指定字符的下标:expr index 内容 字符,例如:$ind=`expr index "$content" "="` (获取字符下标)

    提取字符串的子串:expr substr 内容 起始位置 字符个数,例如:$con=`expr substr "$content" "1" $ind (通过下标获取字符串)

     

    root@tcx4440-03:~# var=helloword

    root@tcx4440-03:~# expr substr $var 2 5
    ellow

    root@tcx4440-03:~# tmp=`expr index $var o`
    root@tcx4440-03:~# echo $tmp
    5
    root@tcx4440-03:~# echo $var
    helloword

     (4)字串真实重现,与echo相似

    root@tcx4440-03:~# echo dfdfd
    dfdfd
    root@tcx4440-03:~# expr dddd
    dddd

    (5)计算字符串的长度

    root@tcx4440-03:~# expr length "abc"
    3

    root@tcx4440-03:~# var=helloworld
    root@tcx4440-03:~# expr length $var
    10

    (6)expr的模式匹配,

    说明:expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。
    .* 意即任何字符重复0次或多次。

    root@tcx4440-03:~# var=document.doc

    root@tcx4440-03:~# expr $var : '.*'
    12

    (7)在expr中可以使用字符串匹配操作,这里使用模式抽取.doc文件附属名。注意:需要用反斜杠对()进行转义,同时注意空格

    root@tcx4440-03:~# expr $var : '(.*).doc'
    document

  • 相关阅读:
    桌面图标背景透明
    如何做好一个中小型企业计算机网络管理员
    打开IE8总是提示欢迎使用?怎样使它不提示?
    js 操作select和option,添加select列
    bios 被加密,怎么进入bios
    Foxmail自动收取新邮件
    代码片段
    提高生活幸福感的13个方法
    水晶报表的真实体验
    游标替代
  • 原文地址:https://www.cnblogs.com/Berryxiong/p/4810055.html
Copyright © 2011-2022 走看看