【shell编程之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]}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Holy meat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值