shell 判断字符串是否为数字

  1. #!/bin/bash   
  2.      
  3. ## 方法1
  4. a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers

  5.     第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,如果非空,则结果为真。
  6.      sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要的内容:即后面的表达式所匹配的行,这是通过表达式中加入“p”命令来实现的。
  7.     /^[0-9][0-9]*$/他的含义是匹配至少由一位数字构成的行
  8.      
  9. ## 方法2, 可以,不过不是bash实现的,是使用了grep的正则  
  10. #if grep '^[[:digit:]]*$' <<< "$1";then  
  11. #    echo "$1 is number."  
  12. #else  
  13. #    echo 'no.'  
  14. #fi  
  15.      
  16. ## 方法3  
  17. #if [ "$1" -gt 0 ] 2>/dev/null ;then  
  18. #    echo "$1 is number."  
  19. #else  
  20. #    echo 'no.'  
  21. #fi  
  22.      
  23. ## 方法4,case  
  24. #case "$1" in  
  25. #    [1-9][0-9]*)   
  26. #        echo "$1 is number."  
  27. #        ;;  
  28. #    *)    
  29. #        ;;  
  30. #esac  
  31.      
  32. ## 方法5,awk  
  33. #echo $1| awk '{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'  
  34.      
  35. ## 方法5,awk  
  36. #if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ];then  
  37. #    echo "$1 is number."  
  38. #else  
  39. #    echo 'no.'  
  40. #fi  
  41.      
  42.  ## 方法6,expr  
  43. expr $1 "+" 10 &> /dev/null  
  44. if [ $? -eq 0 ];then  
  45.     echo "$1 is number"  
  46. else  
  47.     echo "$1 not number"  
  48. fi  

你可能感兴趣的:(shell 判断字符串是否为数字)