ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# **一、expr命令** ## **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 $?` > 0 >* `i=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 NUM2 >* `sh /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 file > * `sh /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