Fork me on GitHub

Shell脚本数字比较与四则运算

一、普通方式

分别以脚本传参和read读入的方式写出两个脚本,并且需要对传入的参数进行是否为数字进行判断。

1、脚本传参方式

#!/bin/sh
a=$1
b=$2
# 判断输入是否为空
if [ -z "$a" ] || [ -z "$b" ] 
 then
   echo "must input"
else
   #判断输入是否为整数
   expr $a + 0 > /dev/null
   expr $b + 0 > /dev/null
   if [ $? -eq 0 ]
     then
        echo "input number"
   else
     echo "must number" 
   fi
  # 判断两个整数大小
  if [ $a -lt $b ]
    then
      echo "$a less then $b"
  elif [ $a -gt $b ]
    then
      echo "$a less then $b"
  else
      echo "$a equals to $b"
  fi    
fi

2、read 读入

#!/bin/sh
read -p "please input two number" a b
# 判断输入是否为空
if [ -z "$a" ] || [ -z "$b" ] 
 then
   echo "must input"
else
   #判断输入是否为整数
   expr $a + 0 > /dev/null
   expr $b + 0 > /dev/null
   if [ $? -eq 0 ]
     then
        echo "input number"
   else
     echo "must number" 
   fi
  # 判断两个整数大小
  if [ $a -lt $b ]
    then
      echo "$a less then $b"
  elif [ $a -gt $b ]
    then
      echo "$a less then $b"
  else
      echo "$a equals to $b"
  fi    
fi

二、优化方式

如果输入的个数不是两个,如何进行判断?

read -p "please input values: " a b
expr + $a &> /dev/null
A=$?
expr + $b &> /dev/null
B=$?
if [ ! -n ""$a ]||[ ! -n "$b" ]
   then
     echo "please input two values"
elif [ "$A" -ne 0 ]||[ "$B" -ne 0 ]
   then
     echo "please input two numbers"
else
   echo "$a-$b=$(($a-$b))"
   echo "$a+$b=$(($a-$b))"
   echo "$a*$b=$(($a*$b))"

 

posted @ 2021-01-24 16:20  iveBoy  阅读(329)  评论(0编辑  收藏  举报
TOP