七、expr命令
2023-03-14 22:46:57 时间
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 $?
0i=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 NUM2sh /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 filesh /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
相关文章
- 掌握SQL,学习这30个实例就足够了
- 从 LeetCode 的题目再看 MySQL Explain
- 两行代码修复了解析MySQL8.x binlog错位的问题!!
- 这四种情况下,才是考虑分库分表的时候!
- 切记!MySQL中Order By与Limit不要一起用!
- 这才叫细:带你深入理解Redis分布式锁
- 深入了解MySQL主从复制的原理
- Redis 消息队列的三种方案(List、Streams、Pub/Sub)
- Redis主从复制是如何保证数据不丢失的?
- 怎么用Redis分布式锁才能确保万无一失?
- 旧手机处理前,记得做好这2步操作,否则你的个人隐私很容易泄露
- 数据库实用脚本:计算地球上两个坐标点之间的里程
- MySQL5.7数据库主从架构部署,你再也不用去问度娘了
- 2021年了,Redis复制原理你应该理解!
- 一文深入Redis主从复制的原理详解,权威又科学
- 学SQL的你,有碰到这5个问题吗?
- 比较开源数据库以选择合适的工具
- SQL如何提取字符串中的字母?
- 谷歌要抢苹果用户?将推iOS数据迁移工具,苹果:等你5年了
- 数据库:分享四个实用的SQL Server脚本函数,欢迎收藏