wslhs 发表于 2018-8-21 09:56:15

shell的expr运算符的使用

  使用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 oldboylinux welcome toourtraining
#!/bin/bash  
char="I am oldboy linux welcome toour 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#


页: [1]
查看完整版本: shell的expr运算符的使用