首页 » Linux » 20道必会shell题第11题

20道必会shell题第11题

 

企业面试题11:开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。以屏幕输出的方式提醒用户比较结果。注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数做判断。

解答思路:很简单,有一种特殊情况需要考虑:就是当有负数的时候,expr 来判断是不是整数,运算符两边要有空格,如果计算结果是0,也算是不是整数。

答案一:
root@nfs_server scripts]# cat cmp1.sh
#/bin/bash
read -t 10 -p “please input two int number:” a b
c=`echo $a+$b|bc`
if [ “$c” == “0” ]
then
expr $a + $b + 1 1>/dev/null 2>/dev/null
if [ $? -ne 0 ];then
echo “pls input int num!”
exit 3
fi
else
expr $a + $b >/dev/null 2>/dev/null
if [ $? -ne 0 ];then
echo “pls input int num!”
exit 3
fi
fi

if [ $a -gt $b ]
then
echo “$a > $b”
exit
elif [ $a -eq $b ]
then
echo “$a = $b”
exit 0
else
echo “$a < $b”
fi
答案二:
[root@nfs_server scripts]# cat cmp2.sh
#!/bin/bash
if [ $# -ne 2 ]
then
echo “pls input two arguement!!!”
exit 2
fi
c=`echo “$1″+”$2″|bc`
if [ “$c” == “0” ]
then
expr $1 + $2 + 1 &>/dev/null
[ $? -ne 0 ]&& echo “pls input two int numbers!!” &&exit 2
else
expr $1 + $2 &>/dev/null
[ $? -ne 0 ]&& echo “pls input two int numbers!!”&&exit 2
fi
if [ $1 -gt $2 ]
then
echo “$1 > $2”
exit
elif [ $1 -eq $2 ]
then
echo “$1 = $2”
exit
else
echo “$1 < $2”
fi

原文链接:20道必会shell题第11题,转载请注明来源!

0