判断用户输入是否是数字

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

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


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

SunyBome

赞同来自:

看看
0

summer123

赞同来自:

#!/bin/bash
echo "Please input a number"
read num
expr $num "+" 10 &> /dev/null
if [ $? -eq 0 ]
then
        echo "your input_num is a $num"
else
        echo "$num not a num"
fi
我的只是一次判断。
学习铭哥的一下。
0

summer123

赞同来自:

#!/bin/bash
while [ 1 ]
do
echo "Please input a number"
read num
expr $num "+" 10 &> /dev/null
if [ $? -eq 0 ]
then
        echo "your just input_num is  $num"
        exit 0
else
        echo "$num not a num"
fi
done
按照铭哥的那个执行 退出就可以了。呵呵
0

wangdi244

赞同来自:

  1. #!/usr/bin/env python
  2. # coding=utf-8
  3. import sys
  4. while True:
  5.     try:
  6.         input = raw_input('请输入一个数字:')
  7.     except KeyboardInterrupt:
  8.         sys.exit('\n')
  9.     if input.isdigit():
  10.         print input
0

nihao426181

赞同来自:

^^^^^^^^^^^^^^^^^^^^^^^^^
0

Armani

赞同来自:

我试试
0

googleqicq

赞同来自:

学习
0

乐橙306

赞同来自:

RE: 判断用户输入是否是数字 [修改]
0

lucas1202

赞同来自:

#!/bin/bash

n=1
while [ ! -z "$n" ]
do
  read -p "please input a number:" m
   n=`echo $m|sed 's/[0-9]//g'`
  if [ -n "$n"  ]
  then
   echo "the character you input is not a number ,please retry"
else
  echo $m
fi
done
0

tjlygdx

赞同来自:

练习脚本
0

xebszw

赞同来自:

1
0

哈哈琨少

赞同来自:

学习学习
0

cxiaodian

赞同来自:

good
0

wzwyql

赞同来自:

学习
0

foxbuns

赞同来自:

看看结果
0

北辰星

赞同来自:

学习
0

robert

赞同来自:

lala
0

追风者

赞同来自:

1
0

小指头

赞同来自:

学习
0

lky

赞同来自:

学习
0

Shawn

赞同来自:

用case特别方便,就是多点,if的话更麻烦了
read -p "please input number : " i
case i in
0)
  echo '0'
;;
1)
   echo '1'
;;
`````````````````````
*)
read -p "dplease input number : " i
;;
esac
0

Shawn

赞同来自:

while :
do
read -p "Please input a number: " n
case n in
1)
  echo $n
  exit
;;
2)
  echo $n
  exit
;;
3)
echo $n
  exit 0
;;
*)
  read -p "Please input a number: " n
;;
esac
done
我这个脚本哪有错啊?用了exit退不出循环;
0

demon_l

赞同来自:

#!/bin/bash
read -p "please input a number: " num
expr $num + 1 &> /dev/null
until [ $? -eq 0 ]
do
    echo "Not a number,input again: "
    read num
    expr $num + 1 &> /dev/null
done
echo $num
0

oneliang

赞同来自:

fak
0

RobbieHan

赞同来自:

学习下
0

Rohero

赞同来自:

kankan
0

linux6688

赞同来自:

学习学习
0

Linuxpp

赞同来自:

shell
0

krven

赞同来自:

1
0

yanggang

赞同来自:

#!/bin/bash  while true;do read -p "please input : " n if [[ $n =~ ^[1-9][0-9]*$ ]];then         echo "$n"         exit 10 else         echo "不是数字继续输入......."         continue fi  done
0

yanggang

赞同来自:

#!/bin/bash  while true;do read -p "please input : " n if [[ $n =~ ^[1-9][0-9]*$ ]];then         echo "$n"         exit 10 else         echo "不是数字继续输入......."         continue fi  done
0

ldp840611

赞同来自:

看目的地
0

yangjian319

赞同来自:

学习了。
0

J!_yuan

赞同来自:

read -p "Please input num:" n

        m=`echo $n|sed 's/[0-9]//g'`
while [ -n "$m" ];
        do
        read -p "Again! input num" n
        m=`echo $n|sed 's/[0-9]//g'`
        done
        echo "Is num!!"
0

xueyongbo

赞同来自:

瞧瞧
0

xueyongbo

赞同来自:

summer123 发表于 2015-8-11 10:46
#!/bin/bash
while [ 1 ]
do

如果用户什么也不输入,也可通过验证。。
  1. [root@master shell]# num=""
  2. [root@master shell]# expr $num "+" 10
  3. 10
  4. [root@master shell]# echo $?
  5. 0


我的修正:

  1. #!/bin/bash

  2. while :
  3. do
  4.         read -p "please input a number :" num
  5.         if [ ! -z $num ];then
  6.                 expr $num "+" 1 &> /dev/null
  7.                 if [ $? -eq 0 ];then
  8.                         echo "your input number is $num"
  9.                         break
  10.                 else
  11.                         echo "$num isn't a number."
  12.                 fi
  13.         else
  14.                 echo  " nothing character input, retry. "
  15.         fi
  16. done
0

石头

赞同来自:

{:4_91:}
0

timfeng3535

赞同来自:

dfdf
0

pbw19950507

赞同来自:

0

loveyouhyf

赞同来自:

summer123 发表于 2015-8-11 10:46
#!/bin/bash
while [ 1 ]
do

expr $num "+" 10 &> /dev/null
这一句红色部分的双引号可以不加,效果一样!
0

我是学渣

赞同来自:

{:4_99:}
0

rolay8

赞同来自:


  1. #!/bin/bash

  2. while :
  3.    do
  4.    read -p "请输入一个数字:" num
  5.    n1=`echo -n $num|sed 's/[0-9]//g'`
  6.    if [ -z $n1 ]; then
  7.        echo "你输入的数字是:"$num
  8.        break
  9.    else
  10.        echo "你输入的不是一个纯数字!"
  11.        continue
  12.    fi
  13. done
0

wsw13640218682

赞同来自:

看看
0

考鸡蛋

赞同来自:

  1. #!/bin/bash
  2. flag=1
  3. read -p "输入一个数字" n

  4. while [ $flag -ne 0 ]
  5. do
  6.         m=`echo $n | sed 's/[0-9]//g'`

  7.         if [ -n "$m" ]; then
  8.                 read -p "请重新输入" n
  9.         else
  10.                 echo $n
  11.                 flag=0
  12.         fi

  13. done


0

weifeng1463

赞同来自:

ok
0

杭州小白

赞同来自:

#!/bin/bash
#写一个脚本,让用户输入一个数字,然后判断是否是数字,如果是数字,则打印数字,否>则一直让用户输入,直到是数字为止。

while :
do
  read -p "please input your number: " num
  if [ -z $num ]
  then
      echo "please input your number!"
      continue
  fi
  n=`echo $num |sed -r 's/[0-9]//g'`
  if [ ! -z $n ]
  then
      echo "you should input a real number"
      continue
  fi
  break
done
echo $num
0

weifeng1463

赞同来自:

#!/bin/bash
while :
do
   read -p "Please input a number:" n
   n1=`echo $n | sed 's/[0-9]//g'`
if [ !  -z $n1 ]

then
         echo "Please input a number"
         continue
fi
        break
  done
echo $n
0

maria

赞同来自:


  1. #!/bin/bash

  2. while : ;
  3. do
  4.    read -p '请输入一个数字:' i;
  5.    n=`echo $i |sed 's#[0-9]##g'`
  6.    if [ ! -z $n ]
  7.       then echo '你输入的不是有效数字:'$i;
  8.    else
  9.       echo '你输入的数字是:'$i;
  10.       exit 0;
  11.    fi
  12. done




QQ图片20151228230116.png
0

369666951

赞同来自:

1
0

369666951

赞同来自:

  1. #!/bin/bash
  2. while :
  3. do
  4.     read -p "Please input a number: " n
  5.     n1=`echo $n|sed 's/[0-9]//g'`
  6.     if [ -z $n1 ] && [ ! -z $n ]      #判断用户不输入的情况
  7.     then
  8.         echo $n
  9.         exit 0
  10.     else
  11.         continue
  12.     fi
  13. done


0

重庆-刘鹏

赞同来自:

判断用户输入是否是数字
0

初秋飞马

赞同来自:

一天一个shell小习题。搞定喽{:4_98:}
n=1
while [ ! -z "$n" ]
do
    read -p "Please input a number:" num
    n=`echo $num |sed 's/[0-9]//g'`
    if [ -z "$n" ]
    then
    echo $num
    fi
done

0

vanjle

赞同来自:

{:4_91:}
0

hlymlv

赞同来自:

上课学的  while+ if  正则替换 实现  看看
0

xteplinux

赞同来自:

{:4_91:}
0

415222090

赞同来自:

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

拉卡

赞同来自:

#!/bin/bash
##用户输入,直到输入为数字,然后echo出来
m=1
while [ -n "$m" ]
do
read -p "Please input a number:" n
m=`echo $n |sed 's/[0-9]//g'`
        if [ -z $n ]
        then
        break
        fi
done
echo $n
0

casparcc

赞同来自:

学习 学习
0

HwangChen

赞同来自:

kk
0

1101066558

赞同来自:

#!/bin/bash

while :

do
        read num

        if echo $num | egrep -q '^[0-9]+$'; then
                 echo 1
        else
                 echo 0
        fi
done
0

Burgess

赞同来自:

学习
0

balich

赞同来自:

学习
0

skylake_

赞同来自:

瞧瞧
0

xiaoqing757

赞同来自:

看下
0

t0ny1988

赞同来自:

#!/bin/bash

while :
do
    read -p "Please input a number: " n
    if [ -z $n ]
    then
        echo "你需要输入东西"
        continue
    fi

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

    if [ ! -z $n1 ]
    then
        echo "你只能输入一个纯数字"
        continue
    fi
    break
done
echo $n
0

licengceng

赞同来自:

学习
0

thedawn

赞同来自:

1
0

wangzai

赞同来自:

学习
0

chiang1213

赞同来自:

学习了!
0

chiang1213

赞同来自:

#!/bin/bash
while :
do
read -p "input a num: " aa
if [[ ${aa} =~ ^[0-9]+$ ]]
then
echo "you input a num"
exit 0
fi
done
0

chenqi

赞同来自:

d
0

等风来

赞同来自:

不会。。
0

wsw13640218682

赞同来自:

本帖最后由 wsw13640218682 于 2016-3-22 11:27 编辑
  1. #!/bin/bash
  2. while : ;
  3. do
  4. read -p " u input:" n
  5. n1=`echo "$n"|sed  's/[a-z]//g'`
  6. if [ -z $n1 ]
  7. then
  8. echo "$n is not number,please try agint"
  9. continue
  10. elif [  $? -eq 1 ]
  11. then
  12. echo "$n is number"
  13. exit 0
  14. fi
  15. done
判断是否为数字.png


0

大仔黑黑

赞同来自:

  1. #!/bin/bash
  2. ##written by wangyl
  3. ##2016-04-06

  4. while :;
  5. do
  6.         read -p "请输入一个数字:" num
  7.         expr $num + 0 > /dev/null 2>$1
  8.         if [ "$?" == 0 ];then
  9.                 echo $num
  10.         else
  11.                 echo "这不是一个数字!"
  12.         fi
  13. done
0

linux-小莫

赞同来自:

while :
do
read -p "please input a number:" a
m=`echo $a|sed 's/[ 0-9]//g'`
if [ -z $m ]
then
echo $a
exit
fi
done
0

qq895933723

赞同来自:

看看
0

kevin_tao

赞同来自:

用while就可以了
0

beacon

赞同来自:

本帖最后由 beacon 于 2016-4-8 14:40 编辑

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




0

ggangelo

赞同来自:

#!/bin/bash
n=1
while [ -n "$n" ]
do
   read -p "please input your number: " m
   n=`echo $m|sed 's/[0-9]//g'`
    echo $m
done
~
0

小璇Linux

赞同来自:

看看
0

Linuxpp

赞同来自:

stduy
0

duyanbin

赞同来自:

本帖最后由 duyanbin 于 2016-4-9 06:46 编辑

#!/bin/bash
#
num_check() {
    while true ; do
      read -p "Please input a number ==>"
      if [[ $REPLY =~ ^-?[0-9]+$ ]] ; then           # "=~" 表示匹配它后面的正则表达式 "-?^[0-9]+$"匹配数字(包括负数)
          echo "The number is $REPLY"
          break
      else
          echo "It's not a number,please input again"
          continue
      fi
    done
}

num_check
0

malong

赞同来自:

学习一下
0

lerchi

赞同来自:


0

jxcia2018

赞同来自:

111
0

漠林sky

赞同来自:

学习
0

Sniper

赞同来自:

学习
0

自己定义

赞同来自:

  1. #!/bin/bash
  2. while :; do
  3.         read -p "Please input a number: " a
  4.         b=`echo $a |sed 's/[0-9]//g' | wc -c`
  5.         if [ $b = 1 ];then
  6.                 echo $a
  7.                 exit
  8.         else
  9.                 continue
  10.         fi
  11. done
0

scshfei

赞同来自:

看看
0

xzzlamp

赞同来自:

11
0

xzzlamp

赞同来自:

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

李梦

赞同来自:


#!/bin/bash
read -p "please input a num:" num
m=`echo $num|sed 's/[0-9]//g'`
if [ -n "$m" ]
then
  echo "you input is not a number!"
else
  echo $num
fi
0

乐宝儿

赞同来自:

#! /bin/bash
echo "please input number:"
read a
echo $a |sed 's/[0-9]//g'
echo "$a is number"
0

陈森林

赞同来自:

+1
0

陈森林

赞同来自:

break是结束整个循环体;continue是结束单次循环。
0

branttsai

赞同来自:

study,tks
0

成都-小熊

赞同来自:

看看
0

googleqicq

赞同来自:

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

jonnylin

赞同来自:

学习
0

monga

赞同来自:

学习

回复帖子,请先登录注册

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