我有一个代码,通过给出宽度和高度来找到矩形的区域。
echo -n "Enter width: "
read width
echo -n "Enter height:"
read height
echo "Area of rectangle $(echo "$height*$width" | bc) sqcm"
如何才能输入,只能输入一个数字,否则会显示错误?
答案 0 :(得分:1)
由于您正在读取输入两次,我会使用一个函数来检查它。这样就不会重复代码了。
检查输入是否只包含数字和至少一个。否则,它会不断要求输入:
myread () {
while : # infinite loop
do
read value
[[ $value =~ ^[0-9]+$ ]] && echo "$value" && return #return value if good input
done
}
echo -n "Enter width: "
width=$(myread) #call to the funcion and store in $width
echo -n "Enter height: "
height=$(myread) #call to the funcion and store in $height
echo "Area of rectangle $(echo "$height*$width" | bc) sqcm"
答案 1 :(得分:0)
你也许可以使用grep来检查,但是如果你想要这些检查,真正的bash(以及一般的shell)是一个糟糕的语言选择。
答案 2 :(得分:0)
类似的东西:
echo $width | grep -E -q '^[0-9]+$' || echo "numeral expected!"
答案 3 :(得分:0)
你可以做一些像thi
这样的事情 if [[ -n "$width" ]] ; then
nodigits="$(echo $width| sed 's/[[:digit:]]//g')"
if [[ ! -z $nodigits ]] ; then
print "Invalid number format! Only digits, no commas, spaces, etc."
fi
fi