shell小技巧(十三)分别以脚本传参以及read读入的方式比较大小

以read读入方式实现:

#!/bin/bash

function IsNumber(){

 if [ -z $1 ]; then

#     echo "need var!"

    return 2

 fi

 echo $1 | grep -q '[^0-9]'

af1=$?

if [ $af1 -ge 1 ]; then

  #this is number,output

 #   echo "number"

    return 0

else

  #  echo "not number"

    return 1

fi

}

read -p "please input a number:" x 

IsNumber $x  #判断第一次输入是否是数字

if [ $? -gt 0 ]; then

   echo "This is not number ,break #1 !"

   exit 1

fi

read -p "please input another number:" y

IsNumber $y #判断第二次输入是否是数字

if [ $? -gt 0 ]; then

   echo "This is not number ,break #2 !"

   exit 1

fi

if [ $x -gt $y ]; then

    echo $x " >"  $y

elif [ $x -eq $y ]; then

    echo $x "=" $y

else

    echo $x "<" $y

fi

--------------------------以下是从互联网获得代码,与上面的代码功能一致------------------------------------------

read -p "Please input two Number: " -a Arr_str
echo ${Arr_str[*]} | grep -E "^[0-9 ]{1,}$" &>/dev/null || exit
 if [ ${#Arr_str[*]} -eq 2 ];then
   if [ ${Arr_str[0]} -eq ${Arr_str[1]} ];then
        echo "${Arr_str[0]} == ${Arr_str[1]}"
   elif [ ${Arr_str[0]} -gt ${Arr_str[1]} ];then
        echo "${Arr_str[0]} > ${Arr_str[1]}"
   else
        echo "${Arr_str[0]} < ${Arr_str[1]}"
   fi
 else
    echo "Please input two Number"
 fi
此段代码read使用了数组接收输入数字,同样做了是否是数字的按断。

-------------------------------------------------------------------------------------------------------------------------------------------

以传参方式:

#!/bin/bash

function IsNumber(){

 if [ -z $1 ]; then

#     echo "need var!"

    return 2

 fi

 echo $1 | grep -q '[^0-9]'

af1=$?

if [ $af1 -ge 1 ]; then

  #this is number,output

 #   echo "number"

    return 0

else

  #  echo "not number"

    return 1

fi

}

#判断第一个参数是否存在

if [ -z $1 ]; then

 echo "please number ,break #1 !"

 exit 1

fi

IsNumber $1 #判断第一个参数是否是数字

if [ $? -gt 0 ]; then

   echo "This is not number ,break #1 !"

   exit 1

fi

#判断第二个参数是否存在

if [ -z $2 ]; then

 echo "please another number ,break #2 !"

 exit 1

fi

IsNumber $2 #判断第二个参数是否是数字

if [ $? -gt 0 ]; then

   echo "This is not number ,break #2 !"

   exit 1

fi

x=$1

y=$2

if [ $x -gt $y ]; then

    echo $x " >"  $y

elif [ $x -eq $y ]; then

    echo $x "=" $y

else

    echo $x "<" $y

fi

--------------------------以下是从互联网获得代码,与上面的代码功能一致------------------------------------------

#!/usr/bin/bash
 echo $1 | grep -E "^[0-9 ]{1,}$" &>/dev/null || exitecho $2 | grep -E "^[0-9 ]{1,}$" &>/dev/null || exit
 if [ $# -eq 2 ];then
   if [ $1 -eq $2 ];then
        echo "$1 == $2"
   elif [ $1 -gt $2 ];then
        echo "$1 > $2"
   else
        echo "$1 < $2"
   fi
  else
    echo "Please input two Number"
fi

-------------------------------------------------------------------------------------------------------------------------------------------

本文重点总结:

1.对输入参数的合理性判断,如是否输入,输入的是否是数字

2.封装函数,重复利用代码

3.条件语句if ,elif,else的用法

4.逻辑条件判断

5.read的用法

发布了53 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/bigwood99/article/details/105081786