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的使用】相关推荐

  1. 详解Shell编程之if语句实战(小结)

    本篇文章主要介绍了详解Shell编程之if语句实战(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 对于if语句,其实很多人都肯定的听说过,那么if语句到底是什么, ...

  2. shell编程之case语句及函数

    shell编程之case语句 文章目录 shell编程之case语句 一.case语句 1. 语法结构 2. 应用案例 二.函数 1. 什么是函数? 2. 如何定义函数? 3. 函数如何调用? ㈠ 当 ...

  3. linux下简单的shellfor循环程序,对Linux下shell编程之for循环的实例讲解

    对Linux下shell编程之for循环的实例讲解 linux 下 for 循环中可以使用 break 和 continue 关键字来跳出循环, 和java 用法一致 一.常用for循环结构 #语法一 ...

  4. shell编程之 if 判断语句

    shell编程之 if 判断语句 判断语句介绍 - if 单if 语句(一个条件一个判断结果) if..else 语句(一个条件两个判断结果) if..elif..else 语句(多条件多个判断结果) ...

  5. shell脚本求和_【零基础学云计算】Shell编程之case语句与循环语句

    case多分支语句 循环语句 for循环语句 while循环语句 untli循环语句 Shell函数 Shell数组 case语句的结构 针对变量的不同取值,分别执行不同的命令序列 case 变量值 ...

  6. linux dash 全局变量,Shell编程之shell基础

    一.shell介绍 1.编程语言分类 2.shell简介 3.shell脚本 1)什么是shell脚本? 2)什么时候用到脚本? 3)shell脚本能干啥? 4)shell脚本的基本写法 5)shel ...

  7. Shell编程之Csh和Bash的经验总结

    文章目录 前言 1. 变量和环境变量设置 1. csh 2. bash 2. if语句 1. csh 2. bash 3. while循环 1. csh 2. bash 4. 数组 1. csh 2. ...

  8. Shell编程之matrix---装逼又炫酷

    代码如下: #!/bin/bash blue="\033[0;34m" brightblue="\033[1;34m" cyan="\033[0;36 ...

  9. Shell编程之for循环

    for 循环 第一种写法: 1.基本语法(一) for (( 初始值;循环控制条件;变量变化 )) do 程序 done 2.案例 (1)计算1到100的和 第二种写法 基本语法(二) for 变量 ...

最新文章

  1. Ubuntu13.10下搭建emacs+sbcl+slime的lisp开发环境
  2. IntelliJ IDEA 2020.2 EAP 5 发布:完美支持Java 15
  3. 循环基础-第一个while循环
  4. q-dir 打不开文件_Q-Dir –多窗格文件管理器
  5. boot gwt_带Spring Boot的GWT
  6. IOS--UIAlertView的使用方法详细
  7. tmux 上滚_实践中的tmux:回滚缓冲区
  8. java6特性_Java开发者:你应该远离的6个Java特性
  9. Sun HotSpot JVM内存管理及垃圾收集
  10. OpenCV-霍夫圆变换cv::HoughCircles
  11. Cmake编译 OPENCV_DNN_CUDA 报错: CMake Error at modules/dnn/CMakeLists.txt:39 (message):
  12. java JDK的下载与安装 JVM JRE JDK区别
  13. linux刷wes7,WES7——Win7的嵌入式操作系统
  14. 如何在电脑/手机上将HTML文件转换为PDF?
  15. 学会了手工计算开平方
  16. 如何画出一张优秀的架构图?(老鸟必备)
  17. html的视频字幕制作步骤,视频滚动字幕怎么制作(上)
  18. 《近匠》专访猿团创始人CEO谢恩明:梦想、未来、改变
  19. python中and和or的区别-Python中and-or语法
  20. python用Matplotlib画甘特图

热门文章

  1. win32 zbar
  2. w3cschool linux命令,linux常见操作指令
  3. python中如何判断三角形
  4. java kill线程_如何优雅的 kill 线程
  5. google 地图回中国了
  6. 女神保卫战本期擂主奶茶MM
  7. VC MFC工具栏(CToolBar)控件
  8. MFC之GDI GDI+ 编程实例剖析
  9. OSChina 周日乱弹 ——程序员闷骚么?事实证明……
  10. 设计模式--第七章 克隆模式