判断用户输入是否是数字

回复 收藏
写一个脚本,让用户输入一个数字,然后判断是否是数字,如果是数字,则打印数字,否则一直让用户输入,直到是数字为止。

答案
{{{密码回复可见}}}


2015-08-07 09:53 举报
已邀请:
0

hsm

赞同来自:

xx
0

lanceli

赞同来自:

看看
0

dongdongchen

赞同来自:

学习学习
0

zhangdailu

赞同来自:

学习
0

df1360

赞同来自:

1
0

小毅

赞同来自:

#!/bin/bash
##########################################################
#Author:17-HuangYi
#Email:caocao1990@163.com
#FileName:while.sh
#Version:1.0
#Created:2016-07-20
##########################################################
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:~/bin
export PATH
function read_num(){
cat< ============================================
    please input a number:
============================================   
HY
}
while true
do
        read_num
    read -p "please:" num
    expr $num + 1 &>/dev/null
    if [ $? -eq 0 ];then
            echo "this is number: $num"
            break
    fi
    done
0

zxc123

赞同来自:

看看
0

zxc123

赞同来自:

练习
0

Kry1702

赞同来自:

#!/bin/bash

for i in [ -n "$n" ]
do
        read -p "Please enter the Numbers:" m
        n=`echo $m |sed 's/[0-9]//g'`
        if [ -z "$n" ]
         then
          echo $m
          exit
用for循环但是存在一个问题,不会一直循环。所有还是用while 循环比较好。
#!/bin/bash
n=0
while [ -n "$n" ]
do
        read -p "Please enter the Numbers:" m
        n=`echo $m |sed 's/[0-9]//g'`
        if [ -z "$n" ]
         then
          echo $m
          exit
        fi
done

这样写可以解决需求 但是有一个问题,如果我不输入任何东西,直接回车,就会退出shell
原因在于我使用sed 将数字替换为空,为空就认为输入的是数字,不为空就有其他字符





0

hhao

赞同来自:

1
0

liupeng

赞同来自:

学习学习
0

leewillxlw

赞同来自:

学习一下
0

午夜DJ

赞同来自:

看看
0

小熊

赞同来自:

查看
0

wy1028

赞同来自:

{:4_91:}
0

GaryHuang0113 - 世上无难事,只怕有心人

赞同来自:

#!/bin/bash

if [ ! -n "$1" ]
then
  echo "Please input a number" ;
  exit 0
fi

result=`echo $1 | grep '^[0-9]*$'`

if [ -n "$result" ]
then
echo  "$1 Is a Number"
else
echo "$1 Is Not Number"
fi
0

Bullet_Point

赞同来自:

1
0

liqian

赞同来自:

学习
0

标哥

赞同来自:

#!/bin/bash
while :
do
  read -p "please input  a number:" num
  num2=`echo $num|sed 's/[0-9]//g'`
  echo "num2=$num2"
  if [ -n "$num2" ]
  then
      echo "your input is not number,please try again."
      continue
  else
      echo "your input : $num"
      break
  fi
done

0

a719276115

赞同来自:


  1. echo "请输入一个数字"

  2. aaaa(){
  3. read nu

  4. #取出输入是否只有一个值
  5. w=`echo $nu |wc -L`

  6. #将输入的内容去掉数字,把值赋给变量
  7. n=`echo $nu |sed 's/[0-9]//g'`

  8. if [ -z "$n" ]&&[ $w = "1" ]
  9. then
  10.         echo "输入正确,是一个数字"
  11. else
  12.         echo "输入错误,请输入一个数字"
  13.         aaaa
  14. fi
  15. }
  16. aaaa
0

13805775620

赞同来自:

学习学习
0

kevinjin

赞同来自:

  1. #! /bin/bash
  2. while :
  3. do
  4.     read -p "Please input a number: " n
  5.     if [ -z `echo $n|sed 's/[0-9]//g'` ]
  6.     then
  7.         echo "Your number is $n"
  8.         exit
  9.     fi
  10. done
0

linuxcp

赞同来自:

看看
0

zyos

赞同来自:

#!/bin/bash

while true
        do
   read -p "请你输入一个数字 " num
   a=`echo $num |sed 's/[0-9]//g'`
if [ -z $a ];then
   echo "你输入的是一个数字"
   exit
else
   echo "你输入的不是数字,重新输入"
fi
     done
0

水水

赞同来自:

1
0

hkmaozi

赞同来自:

学习
0

kw是id

赞同来自:

#!/bin/bash
while :
do
  read -p "please enter a number: " n
  a=`echo "$n"|sed 's/[0-9]//g'`
  if [ -z "$a" ]
  then
    echo $n
    exit
  fi
done

0

大雁

赞同来自:

  4 while :
  5 do
  6   read -p "please input a num:" n
  7   m=`echo $n|sed 's/[0-9]//g'`
  8   if [ ! -z $m ]
  9   then
 10     continue
 11   else
 12     echo "you num is $n"
 13     exit
 14   fi
 15 done

0

王斌

赞同来自:

#!/bin/bash

#Cityzen Wang

#2017-04028

while :

do

    read -p "Please input a number: " m

    n=`echo $m | sed 's/[0-9]//g'`

    if [ -n "$n" ];then

        echo "numbers only"

    else

        echo $m

        exit

    fi

done

0

杨银根

赞同来自:

#!/bin/bash

while :

do

    read -p "please input number:" m

    expr $m "+" 1 &>/dev/null

    if [ $? -eq 0 ]

    then

       echo $m

       exit

    fi

    continue

done

0

songyi123

赞同来自:

学习

0

金银花

赞同来自:

while [ 1 ]

do

read -p "请输入数字:" n

if [ `echo $n|grep -E [^0-9]|wc -l` -gt 0 ]

then

echo "输入的为非数字,请重新输入"

else

echo "输入为纯数字,退出"

exit 0

fi

done

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: