【shell编程之expr的使用】
shell编程之expr的使用
- 语法格式
- 获取expr运算的结果
- expr进行算数运算
- expr进行字符串的处理
- 练习
expr是一个shell命令,可以使用man expr查看命令的帮助手册
语法格式
expr 表达式
注:
1> 表达式中使用变量时必须加$
2> 表达式的运算符两边必须加空格
原因:expr本质就是一个命令
expr 100 + 200 —> 执行expr命令,100和+和200作为三个参数传递给expr程序,
expr程序中通过argv和argc获取执行程序时传递的参数。
expr 100+200 # 错误的写法
3> expr不可以进行自增和自减运算
expr++ ----> error 不支持
expr-- ----> error 不支持
expr a + 1
expr a - 1 ----> OK
4> 在expr中使用的部分运算符需要进行转移
\ * \ > \ < \ ( \ )
具体是否需要转移,根据编写的时候确定,如果报错或者结果不正确可能就是运算符需要转移
5> 在expr的表达式中使用变量时,最好将变量使用双引号括起来
获取expr运算的结果
变量名=expr 表达式
expr进行算数运算
ARG1 < ARG2
ARG1 <= ARG2
ARG1 = ARG2
ARG1 != ARG2
ARG1 >= ARG2
ARG1 > ARG2
成立返回1,不成立返回0,使用变量时,给变量加"“,部分运算符需要进行转义
ARG1 + ARG2
ARG1 - ARG2
ARG1 * ARG2
ARG1 / ARG2
ARG1 % ARG2
使用变量时,给变量加”",部分运算符需要进行转义
ARG1 | ARG2
只要有一个变量的值为真(变量的值不为0或者非空),则输出ARG1的值,否则输出0
ARG1 & ARG2
只有两个变量的值都为真(变量的值不为0或者非空),则输出ARG1的值,否则输出0
expr进行字符串的处理
expr match STRING REGEXP
从STRING字符串中和REGEXP字符串进行比较,如果比较成功返回相同字符的个数,不成功返回0
expr substr STRING POS LENGTH
从STRING字符串中截取子字符串,POS从那个位置开始截取,LENGTH截取字符串的长度;
注:STRING字符串的第一个字符的起始编号为1
expr index STRING CHARS
从STRING字符串中查找第一次出现CHARS字符的位置,成功返回字符的编号,没有找到返回0;
如果一个字符串中有多个CHARS,返回第一次出现此字符的位置
注:STRING字符串的第一个字符的起始编号为1
expr length STRING
计算字符串的长度 等价于${#STRING}
练习
通过read读入一个网址,将网址解析赋值给一个数组,如下
使⽤expr以.为界限,截取字符串放⼊到数组中并输出,比如
arr[0]=www
arr[1]=hqyj
arr[2]=com
注: 不能用cut
#!/bin/bash
read -p "请输入网址:" net
arr=()
len=`expr index "$net" "."`
arr[0]=`expr substr "$net" 1 "$((len-1))"`
echo ${arr[0]}
length=`expr length "$net"`
str=`expr substr "$net" "$((len+1))" "$((length-len))"`
len1=`expr index "$str" "."`
length1=`expr length "$str"`
arr[1]=`expr substr "$str" 1 "$(($len1-1))"`
echo ${arr[1]}
arr[2]=`expr substr "$str" "$(($len1+1))" "$(($length1-$len1))"`
echo ${arr[2]}
【shell编程之expr的使用】相关推荐
- 详解Shell编程之if语句实战(小结)
本篇文章主要介绍了详解Shell编程之if语句实战(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 对于if语句,其实很多人都肯定的听说过,那么if语句到底是什么, ...
- shell编程之case语句及函数
shell编程之case语句 文章目录 shell编程之case语句 一.case语句 1. 语法结构 2. 应用案例 二.函数 1. 什么是函数? 2. 如何定义函数? 3. 函数如何调用? ㈠ 当 ...
- linux下简单的shellfor循环程序,对Linux下shell编程之for循环的实例讲解
对Linux下shell编程之for循环的实例讲解 linux 下 for 循环中可以使用 break 和 continue 关键字来跳出循环, 和java 用法一致 一.常用for循环结构 #语法一 ...
- shell编程之 if 判断语句
shell编程之 if 判断语句 判断语句介绍 - if 单if 语句(一个条件一个判断结果) if..else 语句(一个条件两个判断结果) if..elif..else 语句(多条件多个判断结果) ...
- shell脚本求和_【零基础学云计算】Shell编程之case语句与循环语句
case多分支语句 循环语句 for循环语句 while循环语句 untli循环语句 Shell函数 Shell数组 case语句的结构 针对变量的不同取值,分别执行不同的命令序列 case 变量值 ...
- linux dash 全局变量,Shell编程之shell基础
一.shell介绍 1.编程语言分类 2.shell简介 3.shell脚本 1)什么是shell脚本? 2)什么时候用到脚本? 3)shell脚本能干啥? 4)shell脚本的基本写法 5)shel ...
- Shell编程之Csh和Bash的经验总结
文章目录 前言 1. 变量和环境变量设置 1. csh 2. bash 2. if语句 1. csh 2. bash 3. while循环 1. csh 2. bash 4. 数组 1. csh 2. ...
- Shell编程之matrix---装逼又炫酷
代码如下: #!/bin/bash blue="\033[0;34m" brightblue="\033[1;34m" cyan="\033[0;36 ...
- Shell编程之for循环
for 循环 第一种写法: 1.基本语法(一) for (( 初始值;循环控制条件;变量变化 )) do 程序 done 2.案例 (1)计算1到100的和 第二种写法 基本语法(二) for 变量 ...
最新文章
- Ubuntu13.10下搭建emacs+sbcl+slime的lisp开发环境
- IntelliJ IDEA 2020.2 EAP 5 发布:完美支持Java 15
- 循环基础-第一个while循环
- q-dir 打不开文件_Q-Dir –多窗格文件管理器
- boot gwt_带Spring Boot的GWT
- IOS--UIAlertView的使用方法详细
- tmux 上滚_实践中的tmux:回滚缓冲区
- java6特性_Java开发者:你应该远离的6个Java特性
- Sun HotSpot JVM内存管理及垃圾收集
- OpenCV-霍夫圆变换cv::HoughCircles
- Cmake编译 OPENCV_DNN_CUDA 报错: CMake Error at modules/dnn/CMakeLists.txt:39 (message):
- java JDK的下载与安装 JVM JRE JDK区别
- linux刷wes7,WES7——Win7的嵌入式操作系统
- 如何在电脑/手机上将HTML文件转换为PDF?
- 学会了手工计算开平方
- 如何画出一张优秀的架构图?(老鸟必备)
- html的视频字幕制作步骤,视频滚动字幕怎么制作(上)
- 《近匠》专访猿团创始人CEO谢恩明:梦想、未来、改变
- python中and和or的区别-Python中and-or语法
- python用Matplotlib画甘特图