shell 判断字符串是否为数字

本文介绍并演示了六种不同的方法来判断一个字符串是否仅包含数字字符。这些方法包括使用bash脚本、grep正则表达式、awk文本处理工具等。每种方法都附带了详细的解释说明其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值