在初始输入时候我直接按回车,如何验证这种情况下的非法输入?

来源: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回答

酷田

2019-12-20

同学,如果想要判断输入得是否为空,可以对变量num做非空判断,像下图中这样就可以//img.mukewang.com/szimg/5dfc769509bdc3dc11400582.jpg

#!/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


0
4
云霄9
回复
酷田
哦!对对对!你说的很对! 我猪油蒙了心我一直纠结为啥结果出不来但是忘记我写是逻辑与不是逻辑或了! (>人<;)
2019-12-25
共4条回复

掌握Shell脚本编程 360架构师带你进阶Linux高手

30%知识讲解+70%实例操作 掌握Shell脚本编程能力

1638 学习 · 297 问题

查看课程