在初始输入时候我直接按回车,如何验证这种情况下的非法输入?
来源:5-10 bash数学运算之expr(下)
云霄9
2019-12-19
如图,万一我在please enter a position interger: 时候直接回车,我会得到许多
./practise_sum.sh: line 13: ((: 9691>: syntax error: operand expected (error token is “>”)
请问如何验证用户是不是输入了东西呢?
我的代码如下
#!/bin/bash
#
while true
do
read -t 30 -p "Please enter an integer: " input
if [ -n ${input//[0-9]/} ]
then
echo "Only integer is allowed."
else
index=1
sum=0
until (($index>$input))
do
sum=$(($sum+$index))
((++index))
done
echo "Sum for 1+2+...+$input is: $sum"
exit
fi
done
1回答
-
同学,如果想要判断输入得是否为空,可以对变量num做非空判断,像下图中这样就可以
#!/bin/bash
#
while true
do
read -p "pls input a positive number: " num
if [ -z $num ];then
echo "input enlegal"
continue
fi
expr $num + 1 &> /dev/null
if [ $? -eq 0 ];then
if [ `expr $num \> 0` -eq 1 ];then
for((i=1;i<=$num;i++))
do
sum=`expr $sum + $i`
done
echo "1+2+3+....+$num = $sum"
exit
fi
fi
echo "error,input enlegal"
continue
done
042019-12-25
相似问题