首页 > 系统相关 >shell_脚本开发_数值运算_expr命令

shell_脚本开发_数值运算_expr命令

时间:2023-10-10 10:33:08浏览次数:41  
标签:tmp shell 运算 expr jpeg jpg root localhost

expr命令

简单的计算器执行命令

可以用expr --help查看文档

#expr 是以传入参数的形式进行计算的 ,它基于空格传入参数,但是在shell里的一些元字符(*啊这类)都是有特俗含义的,需要转义
[root@localhost ~]# expr 2 + 5
7
[root@localhost ~]# expr 2 * 5
expr: 语法错误
[root@localhost ~]# expr 2 \* 5
10
[root@localhost ~]# expr 2 \/ 5
0
[root@localhost ~]# expr 5 \/ 5
1
[root@localhost ~]# expr 5 \+ 5
10
[root@localhost ~]# 求字符串长度
[root@localhost ~]# expr length 123
3
[root@localhost ~]# 

[root@localhost ~]# #逻辑判断,1是真0是错
[root@localhost ~]# expr 5 \>1
expr: 语法错误
[root@localhost ~]# expr 5 \> 1
1
[root@localhost ~]# expr 5 \>  6
0
[root@localhost ~]# 
expr模式匹配

expr也支持模式匹配功能

  • 2个特殊符号

:冒号,计算字符串的字符数量

.* 任意的字符串重复0次或者多次 (就是匹配模式)

  • 语法

    expr 字符串 ":" ".*"

    [root@localhost ~]# #统计文件的字符个数
    [root@localhost ~]# expr yc.png ":" ".*"
    6
    [root@localhost ~]# expr ycc.png ":" ".c"
    2
    [root@localhost ~]# expr ycc.png ":" ".g"
    0
    [root@localhost ~]# expr ycc.png ":" ".*g"
    7
    [root@localhost ~]# expr ycc.png ":" ".*c"
    3
    [root@localhost tmp]#  expr "hello.jpeg" ":" ".*"\.jpg
    0
    [root@localhost tmp]#  expr "hello.jpeg" : .*\.jpg
    0
    [root@localhost tmp]#  expr "hello.jpeg" : .*\.jpeg
    10
    [root@localhost tmp]#  expr "hello.jpeg" : .*.jpeg
    10
    [root@localhost tmp]#  expr "hello.jpeg" ":" ".*"\.jpeg #加上引号和转义方便看
    
    
  • 应用实例

    ###eg1,执行脚本,,传入一个文件名,然后判定该文件,死否jpg图片文件
    #!/bin/bash
    
    # 注意,如果写成 expr "${1}" ":" ".*"\.jpg 则会匹配出 afafajpg.gd
    #注意判断语句也可写成,如果是最大长度必定是结尾了晒  if [ `expr length ${1}` -eq `expr ${1} ":" ".*"\.jpg`  ]
    if expr "${1}" ":" ".*\.jpg" &> /dev/null  ###expr执行结果如果非0则真,否则为假;并把执行结果输入黑洞文件
      then
      echo "你好,你输入的是jpg图片"
    else
      echo "抱歉,你输入的不是jpg图"
    fi
    ~   
    
    ##############################################
    ##eg2. 找出长度不大于5的单词
    [root@localhost tmp]# cat test_expr.sh 
    #!/bin/bash
    #
    #
    for  vars in  $*
    
    do 
       
    	if [ `expr length $vars` -le 5  ]
    	
            then 
            	echo $vars
            fi
    
    done
    [root@localhost tmp]# sh test_expr.sh  ab abc abcd abced abceef  akfafafa
    ab
    abc
    abcd
    abced
    [root@localhost tmp]# 
    
    

标签:tmp,shell,运算,expr,jpeg,jpg,root,localhost
From: https://www.cnblogs.com/xjianbing/p/17753992.html

相关文章

  • powershell 获取文件夹的大小
        powershell获取文件夹的大小$startFolder="C:\users"  $colItems=(Get-ChildItem$startFolder |Where-Object{$_.PSIsContainer-eq$True}|Sort-Object)foreach($iin$colItems)  {    $subFolderItems=(Get-ChildItem$i.FullName......
  • JavaScript 浮点数运算的精度问题
    来源:https://zhuanlan.zhihu.com/p/191395766问题描述在JavaScript中整数和浮点数都属于 Number 数据类型,所有数字都是以64位浮点数形式储存,即便整数也是如此。所以我们在打印 1.00 这样的浮点数的结果是 1 而非 1.00 。在一些特殊的数值表示中,例如金额,这样看上去......
  • 界面组件DevExpress WinForms v23.2新功能预览 - 增强MVVM相关功能
    本文主要描述了DevExpressWinForms即将在几个月之后发布的v23.2中包含的新功能,持续关注我们获取更多最新资讯哦~DevExpressWinForms有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。同时能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,......
  • 入门篇-其之五-Java运算符(上)
    一元运算符之正负号Java支持多种一元运算符,一元运算符中的“一元”是指一个操作数。我们初中学过的正负号就属于一元运算符,因为正负号后面只有一个数字。正数使用+表示,其中+可以省略;负数使用-表示。如果变量的值是数值类型,也可以在变量前面加上正负号。/***正负号的表示*......
  • 一次性按要求替换多个文件的名称:PowerShell
      本文介绍基于PowerShell语言,对文件夹中全部文件的名称加以批量替换、修改的方法。  在之前的文章Python批量自动修改大量文件的名称中,我们介绍了基于Python语言,批量修改大量文件的名称的方法。当时我们修改文件名的需求比较复杂,因此选择了用Python语言来实现;而在我们的需求......
  • 在JavaScript比较中,应该使用哪个等号运算符(== vs ===)?
    内容来自DOC[https://q.houxu6.top/?s=在JavaScript比较中,应该使用哪个等号运算符(==vs=)?](https://q.houxu6.top/?s=在JavaScript比较中,应该使用哪个等号运算符(vs===)?)我正在使用JSLint来检查JavaScript代码,并且它返回了许多建议,建议在if语句中比较idSele_UNVEHtype.value.......
  • 运算符
    1.算术允许符2.赋值运算符3.关系运算符4.逻辑运算符5.位运算符6.扩展赋值运算符7.三元运算符(条件运算符)......
  • Java运算符
    算术运算符加法运算符(+):用于将两个值相加。减法运算符(-):用于从一个值中减去另一个值。乘法运算符(*):用于将两个值相乘。除法运算符(/):用于将一个值除以另一个值。取模运算符(%):用于计算两个值相除后的余数。运算符描述示例+相加2+3=5-相减5-2=3*相乘2*3=6/......
  • Shell基本命令小结
    一、mkdir创建目录和rmdir删除目录1创建目录创建单级目录:mkdiraaa创建多级目录mkdir -p bbb/ccc2删除目录删除空目录:rmdiraaa删除非空目录:(1)rmdirccc(2)rmdirbbb/ 二、touch创建文件和rm删除文件创建文件:touchaaa.txt创建多个文件:touchbbb.txtccc.txt 删除文......
  • express开发框架
    1.简介基于Node.js平台,快速、开放、极简的Web开发框架Express官网网站简单讲,Express的作用和Node.js内置的http模块类似,是专门用来创建Web服务器的,Express是基于内置的http模块进一步封装出来的,能够极大的提高开发效率Express的本质:就是一个npm上的第三方......