使用 expr 注意:
运算符及用于计算的数字左右都至少有一个空格,否则报错
使用乘号的时候,必须用反斜线屏蔽其特定的含义
expr 的企业级实战案例详解
由于函数库很少,所以 expr 是一个简单的用于判断一个字符串是否为整数的方法;原理就是 expr 做计算的时候变量或者字符串必须是整数的规则.把一个变量或者字符串和一个整数相加,如果 $? 返回的是 0;这个变量就是整数.
例如:通过传参判断输出是否为整数:
#!/bin/bash
s=`expr $1 + 4 2>&1`
a=$?
if [ $a -eq 0 ]; then
echo "this is int"
else
echo "bad"
fi
判断输入的数值不为空;
#!/bin/bash
read -p "the first num:" num
read -p "the two num:" num2
#num=4
#num2=
if [ ! -n $num ] && [ ! -n $num2 ]; #-n:不为零是真,所以用!取反
then
echo "this is a bab"
exit 1
fi
扩展:
编程思路
第一关:判断参数的个数是不是为 2,若不是,则给你提示终止运行
第二个:判断传入的参数是否为整数,若不是, 则给我提示终止运行
第三关:做运行
#!/bin/bash
read -p "the first num:" num
read -p "the two num:" num2
#num=4
#num2=
if [ ! $num ]; #-n:不为零是真,所以用!取反 或者用!判断,如果是空值,就执行下面的
then
echo "this is a bab"
exit 1
fi
if [ ! $num2 ];
then
echo "this is a babe"
exit 2
fi
expr $num + $num2 + 4 > /dev/null #有点问题
if [ $? -ne 0 ];
then
echo "this must two arge"
exit 3
fi
echo "the is good"
#接下来的计算就很容易了
~
expr 的特殊用法:判断文件扩展命名是否符合要求
#!/bin/bash
if expr "$1" : ".*\.pub" >/dev/null
then
echo "using $1"
else
echo "using bad"
fi
使用 expr 命令计算长度:
root@ubuntu:/home/xpg# char="i am oldboy"
root@ubuntu:/home/xpg# expr length "$char"
11
root@ubuntu:/home/xpg# echo ${#char}
11
root@ubuntu:/home/xpg# echo $char | wc -L
11
请使用 shell 脚本,打印下面语句中字符串不大于 6 的单词:
I am oldboy linux welcome to our training
#!/bin/bash
char="I am oldboy linux welcome to our training"
for i in $char;
do
#echo $i
if [ `echo ${#i}` -le 6 ] >/dev/null # if [ `expr length "$i"` -le 6 ] >/dev/null 也可以使用expr计算长度
then
echo $i
fi
done
bc 计算器:
root@ubuntu:/home/xpg# echo 8.8-5|bc
3.8
root@ubuntu:/home/xpg# echo "scale=2;355/133" |bc #scale=2保留两位小数
2.66
root@ubuntu:/home/xpg#
来源: http://www.bubuko.com/infodetail-2474277.html