linux expr格式,计算2-expr命令举例

# **一、expr命令**

## **1.语法和功能**

只能用于整数运算和字符串长度、匹配等运算处理

```

expr 2 + 2

expr 2 - 2

expr 2 \* 2

expr 2 / 2

i=5;i=`expr $1 + 6`;echo $i

```

> 说明:

运算符及用于计算的数字左右都至少有一个空格,否则会报错

乘号需要转义

在shell中进行变量计算时,需要用反引号括起来

## **2.用expr判断字符串是否是整数**

### 1)原理:

expr做计算时,必须是整数,所以当非整数和整数想加时,命令返回错误,直接查看错误值就能判断是否是整数

>* `i=1;expr $i + 1 &>/dev/null;echo $?`

> 0

>* `i=a;expr $i + 1 &>/dev/null;echo $? `

>2

>>1是整数,所以计算结果返回0,a不是整数,所以计算错误,返回非0

### 2)脚本内容

* cat /server/scripts/t3.sh

```

#!/bin/bash

#no.1

[ $# -ne 2 ] &&{

echo "$0 plase input NUM1 NUM2"

exit 1#必须输入两个参数

}

#no.2

a=$1

b=$1

expr $a + $b &>/dev/null

if [ $? -ne 0 ]

then#两个变量相加返回非0,表示不是整数

echo "you must input two int nums."

exit 2

fi

#no.3

echo "a-b=$(($a-$b))"

echo "a+b=$(($a+$b))"

echo "a*b=$(($a*$b))"

echo "a/b=$(($a/$b))"

echo "a**b=$(($a**$b))"

echo "a%b=$(($a%$b))"

```

### 3)执行脚本

>* `sh /server/scripts/t3.sh 2 `

> /server/scripts/t3.sh plase input NUM1 NUM2

>* `sh /server/scripts/t3.sh a 1`

>you must input two int nums.

> * `sh /server/scripts/t3.sh 2 1`

>a-b=0

a+b=4

a*b=4

a/b=1

a**b=4

a%b=0

## **3.用expr判断文件扩展名是否符合要求**

### 1)脚本内容:

* cat /server/scripts/t5.sh

```

#!/bin/bash

if expr "$1" : ".*\.pub" &>/dev/null

then#比较运算

echo "you are using $1"

else

echo "plase use *.pub file"

fi

```

### 2)执行结果:

> * `sh /server/scripts/t5.sh abd`

> plase use *.pub file

> * `sh /server/scripts/t5.sh abd.pub`

> you are using abd.pub

### 4.利用expr计算变量长度

计算大于语句中字符数小于6的单词

* `cat /server/scripts/t6.sh`

```

for n in I am oldboy linux welcome to our training

do

if [ `expr length $n` -le 6 ]

then

echo $n

fi

done

#利用length参数计算字符串长度

```

* `sh /server/scripts/t6.sh`

>I

am

oldboy

linux

to

our

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打造史上最小尺寸.Net Core单文件应用程序

.Net Core支持将应用程序发布成单文件进行部署和分发。以下示例将Windows应用作为独立的单文件应用程序发布:dotnet publish -r win-x64 -c Release /p:PublishSingleFiletrue /p:PublishTrimmedtrue /p:IncludeNativeLibrariesForSelfExtracttrue查看publish目录&a…

别说了,叫爸爸吧! | 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(视频源网络,侵权删)女主最后的微笑意味深长啊↓ ↓ ↓

嵌入式-C语言面试题【转】

1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束&a…

华硕路由器 linux上不了网,华硕ASUS路由器连不上网怎么办?

在本文中将给大家详细的介绍,华硕(ASUS)路由器连不上网/无法上网的解决办法,请按照下面的步骤进行操作。1. 首先,检查你的宽带是否可以正常使用,可以通过下面的方法进行测试。(1)观察光猫上的指示灯,如果光信号或者LOS…

NHibernate学习笔记(二):one-to-one关系映射

上一篇:NHibernate学习笔记(一):初识NHibernate本文的内容:1.介绍NH如何处理对象间one-to-ont的映射关系;经验教训:1.操作一对一关联关系中的一个…

【汇总】多种方法教你绕过 TPM 2.0 安装 Windows 11 操作系统

此前我们曾介绍三种方法绕过 TPM 2.0 来安装 Windows 11 操作系统。方法一:删除 appraiserres.dll 文件方法二:替换 appraiserres.dll 文件方法三:替换 install.wim 文件今儿我们再谈谈“大法好”的注册表,希望能帮助大家成功安装…

【物理笑话】学过物理的人才能看懂的笑话,你能看明白几个?

全世界只有3.14 % 的人关注了青少年数学之旅1丈夫买了几斤廉价藕,满以为可对妻子炫耀了。不料妻子破口大骂:笨蛋!为何不买别的菜,这藕一斤少说也有半斤窟窿啊!还说便宜?2第一次坐飞机的两位老妇人在飞机起飞…

c语言分配多一个字符空间,关于C语言动态给字符串分配内存空间问题

在动态分配的空间中如何输入字符串,关于C语言动态给字符串分配内存空间的问题相信很多朋友都不太了解,下面维维带来相关解答,赶紧看看吧。用malloc来分配内存空间。即输入几个字节的字符 系统就自动帮我分配几个字节的大小。。char Str(XXXX)…

在web网页中正确使用图片格式

今天又看了一遍淘宝平四分享的PPT,以前转载网址:http://blog.sina.com.cn/s/blog_995c1f6301017fd2.html

NET问答: 如何在 dynamic 集合上使用 Linq ?

咨询区 user1618825:有没有一种方式可以将 dynamic 对象转成 可过滤的 IEnumerable 类型对象?比如下面的代码:dynamic data JsonConvert.DeserializeObject(response.Content);然后用Linq去访问var a data.Where(p > p.verified true)回…

为什么国外程序员加班少?他们这样评价国内996和技术公众号

有人统计过,我们平均每天花在看内容上的时间是5-6小时与其每天被各种看过就忘的内容占据时间不如看点真正对你有价值的信息下面小编为你推荐几个高价值的公众号它们提供的信息能真正提高你生活的质量长按二维码,选择【识别图中二维码】关注Python爱好者社…

c语言编程每日一练教程,每日一练 | C语言之指针

原标题:每日一练 | C语言之指针练习导言学习 C 语言的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员&…

dynamic flash xml news----滚动新闻

今天有人问起这个问题,抽出晚上的一点时间,做了一个,时间紧难免有不足之处,如果发现bug,请以在贴出。演示:代码:代码://copyright by webstudio.com.cn 2005-4-7 system.useCodepagetrue; Stage…

C# 代码生成二维码方法及代码示例(QRCoder)

背景二维码是越来越流行了,很多地方都有可能是使用到。如果是静态的二维码还是比较好处理的,通过在线工具就可以直接生成一张二维码图片,比如:草料二维码。但有的时候是需要动态生成的(根据动态数据生成)&a…

你对手机打字一无所知!| 今日最佳

全世界只有3.14 % 的人关注了青少年数学之旅(视频源网络,侵权删)你真的会打字吗↓ ↓ ↓

because it is not a variable 编译错误解决方案

1,将Stuct换为class 2,使用中间变量, 如Point pnew Point(x,y); this.Locationp; 而不能直接给struct赋值,因为值类型是不能改变的,必须生成新的值类型

C语言笔试很难,C语言笔试题中的“坑”

其实这话说的不对,应该说不只是C语言,恐怕是面试题总会有那么一些坑等着我们踩,今天,就罗列了一些看似简单,却很容易中招的面试题:1、以下程序的执行结果为。#inlcude #define N 2#define M N1#define…

养鹿专辑二:恋鹿篇之枕着老婆的梦编程

明天要去帮伊哥到交通厅去做项目----说帮伊哥其实有点不负责,实际上是我们两个一起在做,因为我临时考试,就让伊哥一个人辛苦了,现在想来,确实不好得很,所以伊哥要留着做兴宏,我刚好不是忙得一团糟,明早(其实是今早,现在凌晨2:06)赶早去那边,做点事情,早去早回,工作效率高点,早九…

并行中的分区Partitioner

本篇介绍在C#中,把一个大集合,或大数组分成若干个区来执行。Demo中是把一组字符串放在list中,然后并行生成MD5串,返回回来。using System; using System.Collections.Generic; using System.Reflection; using System.Threading.T…

搞笑诺贝尔颁出,中国科学家入选!阿蟑有磁性、睾丸热不对称,10大奇葩研究来了...

全世界只有3.14 % 的人关注了青少年数学之旅Laugh and think,科学的另一面,就是有趣!——在今天的哈佛大学桑德斯剧场,一群科学家身体力行地证明了这件事,在诺贝尔奖颁出前夕,率先发布了今年的“搞笑诺贝尔…