linux shell比大小expr,Linux shell命令中expr(示例代码)
在Linux shell命令中expr虽然不是很起眼,但是它的作用是非常大的!到目前为止,我个人看来最大的作用就是两个——四则运算和字符串的操作。
先说四则运算,在Shell中四则运算不能简简单单的加减乘除,应该要写如下的格式:
$val1=`$val2 - 1`
其中“=”后面用“`”包住表达式,这个符号在Shell中十分有用,是Tab键上面“~”的原来形式。可以用来将很多命令的结果保存到一个变量中去。接着就是运算符了,运算符的左右两边必须是空格,否则会出错。
接着是强大的字符串操作:
提取指定字符的下标:expr index 内容 字符,例如:$ind=`expr index "$content" "="`
提取字符串的子串:expr substr 内容 起始位置 终点位置,例如:$con=`expr substr "$content" "1" $ind
----------------------------------------------
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
expr也是一个手工命令行计数器。
$expr 10 + 10
20
$expr 1500 + 900
2500
$expr 30 / 3
10
$expr 30 / 3 / 2
5
(注意运算符左右都有空格 ,如果没有空格表示是字符串连接)
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
$expr 30 * 3
90
数值测试
可以用expr测试一个数。如果试图计算非整数,将返回错误。
$rr=1.1
$expr $rr + 1
expr: non-numeric argument
$rr=2
$expr $rr + 1
3
(注意:这个例子与原文不同)
这里需要将一个值赋予变量(不管其内容如何),进行数值运算,并将输出导入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”。
模式匹配
expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任
何字符重复0次或多次。
$value=accounts.doc
$expr $value : ‘.*‘
12
在expr中可以使用字符串匹配操作,这里使用模式. d o c抽取文件附属名。
$expr $value : ‘(.*).doc‘
accounts
shell 中数组
用
$varname[0]=value1
$varname[1]=value2
....
来定义
用
$echo ${varname[0]}
方式来引用
从位置处抓取字串
shell>> expr substr "this is a test" 3 5
is is
数字串 only the first character
shell>> expr index "testforthegame" e
2
字串真实重现
shell>> expr quote thisisatestformela
thisisatestformela
-----------------------------------------------
expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串。
–格式为:
expr Expression(命令读入Expression 参数,计算它的值,然后将结果写入到标准输出)
–参数应用规则:
用空格隔开每个项;
用 \ (反斜杠) 放在 shell 特定的字符前面;
对包含空格和其他特殊字符的字符串要用引号括起来
–expr用法实例讲解:
(1)、计算字串长度
[[email protected] bkeep]# expr length "bkeep zbb" //包含空格在内
9
(2)、抓取字串
[[email protected] bkeep]# expr substr "bkeep zbb" 4 9
ep zbb
(3)、抓取第一个字符数字串出现的位置
[[email protected] bkeep]# expr index "bkeep zbb" e
3
(4)、整数运算
[[email protected] bkeep]# expr 14 % 9
5
[[email protected] bkeep]# expr 30 / 3 / 2 //运算符与数字间一定要有空格
5
(5)、增量计数
说明:expr在循环中用于增量计算。先将变量初始化为0,然后循环值加1,反引号的用法为命令替代。
> LOOP=0
> LOOP=`expr $LOOP + 1`
(6)、数值测试
说明:用expr测试一个数。如果试图计算非整数,则会返回错误。
> rr=3.4
> expr $rr + 1
expr: non-numeric argument
> rr=5
> expr $rr + 1
6
(7)、模式匹配
说明:expr也有模式匹配功能。可以使用expr通过指定冒号选项计算字符串中字符数。
.* 意即任何字符重复0次或多次。
[[email protected] bkeep]# expr bkeep.doc : ‘.*‘
9
(8)在expr中可以使用字符串匹配操作,这里使用模式抽取.doc文件附属名。
[[email protected] bkeep]# expr bkeep.doc : ‘\(.*\).doc‘
bkeep
linux shell比大小expr,Linux shell命令中expr(示例代码)相关推荐
- linux la 的使用方法,Linux简介及常用命令使用4--linux高级命令与技巧(示例代码)
top 几个磁盘 fdisk -l 磁盘空间 df -lh df -al 查看进程:ps -ef"grep java 杀死进程:kill -9 进程号 more中过滤 more xxx |g ...
- linux icon图标大小,适用于Linux的5款最佳桌面图标集
大多数 Linux 桌面用户都喜欢安装各种主题或者是图标来定制美化自己的 Linux 桌面,我们之前也曾专门介绍过 Numix 主题与 Xenlism WildFire 主题的安装教程,本文我们来放个 ...
- linux之路由知识之ip route 命令中的疑惑
1.基础知识 1.1 路由 (Routing) 1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库) 基于策略的路由比传统路由在功能上更强大,使用更灵活,它使网络管理员不仅能够根据目 ...
- linux gdb打印地址的值,gdb命令中查看地址之x命令
可以使用examine命令(简写是x)来查看内存地址中的值.x命令的语法如下所示: x/ n.f.u是可选的参数. n是一个正整数,表示需要显示的内存单元的个数,也就是说从当前地址向后显示几个内存单元 ...
- df命令能够实现linux系统磁盘管理中,Linux_linux磁盘命令中df命令的作用,linux磁盘命令中df命令的使用, - phpStudy...
linux磁盘命令中df命令的作用 linux磁盘命令中df命令的使用,系统管理员想要知道df命令的功能,看完本文相信您能得到一个满意的答案.磁盘配额:问题是他们没有表达同时想获得磁盘配额管理工具的愿 ...
- 传递命令行参数示例代码 (C 和 Python)
C语言 在 C 语言中, 使用 main 函数的输入参数 argc 和 argv 传入命令行参数. argc 为 int 类型, 表示传入命令行参数的个数 (argument count); argv ...
- linux shell字体大小,改变Linux Shell中的字体和背景颜色
使用Linux的朋友一定熟悉文本界面上的黑底白字和X上的白底黑字,这两种颜色可以说是经典的搭配,清晰明了.但是你也可以根据自己的喜好使字体和背景换个颜色. 下面我介绍一下RedHat的字体和背景颜色的 ...
- Linux按压缩率大小排序,Linux下常用压缩 解压命令与压缩比率对比
常用的格式有: tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar 只是打包动作,相当于归档处理,不做压缩:解压也一样 ...
- Linux按压缩率大小排序,Linux下经常使用压缩 解压命令和压缩比率对比
经常使用的格式有: tar, tar.gz(tgz), tar.bz2, 算法 不一样方式,压缩和解压方式所耗CPU时间和压缩比率也差别也比较大.测试 1. tar 只是打包动做,至关于归档处理,不作 ...
最新文章
- openwrt+linux编译,openwrt x86 编译部署
- activity的使用(八):生命周期
- 数字图像处理:基于MATLAB的车牌识别项目
- 【转】C#格式化字符串
- SVN 集中式版本管理工具
- auot lisp 选择集处理_离散量的计算机处理63_1Cv6
- dbentry访问带密码的Access
- 今天遇到个超郁闷的问题
- 通讯工程考研考计算机专业跨度大么,通信工程专业,与自动化专业差别大吗?考研可以跨考吗?...
- 线性代数 (二): 证明 A^T 乘以 A 为半正定矩阵
- 机器学习之分类算法--mnist手写体识别
- 官方VM tools下载地址
- Tomcat服务器response header 200 OK问题
- 02. Yii 2.0 框架的目录结构
- canvas 将两张图片叠加
- LTU、TTU、DTU、FTU、RTU在电路中的安装位置,功能,区别
- nginx服务器中url重写rewrite参数和例子
- C# 定时任务 调度框架 WebWork (Quartz.NET) Web版的Windows服务
- 【航天远景 MapMatrix 精品教程】04 Metashape空三导入MapMatrix
- java 数据类型cher,java期末考试题96534-(20008)