zoukankan      html  css  js  c++  java
  • shell 判断一个变量是数字还是字符串

           shell脚本中如何判断一个变量是数字还是字符串,其实本身shell脚本中的所有变量值都是字符串,其中的数字也是数字字符串,只是人为的增加了数字的概念,具体可以参考如下内容。

    1、判断一个变量的值是否为整数:

      可以借助于grep命令,结合正则表达式,整数是有[0-9]这10个数字组成,如果字串中有不是这10个数字的字符即表示不是整数,用正则表达式表示为[^0-9],编写代码如下:

    while true
      do
        read -p "input value:" var;
        if [[ $var == q || $var == Q ]];then
          exit;
        fi
        echo "$var" | grep [^0-9] >/dev/null && echo "$var is not number" || echo "$var is number"
      done

    2、判断一个变量的值是否为小数:

      根据上面代码,当输入1.2的时候,就不能判断为一个数了,要保证带小数点的数也能正常判断,可以借助于sed命令,通过其s替换操作,将变量值的“."替换掉即可。只要在上面的倒数第二条echo命令改为:

    echo "$var" |sed 's/.//g'  | grep [^0-9] >/dev/null && echo "$var is not number" || echo "$var is number"

    3、判断一个变量的值是否为正数或者负数:

      根据上一步代码,当输入-1.2的时候,就不能判断为一个数了,要保证正负数也能正常判断,与2中的方法类似可以借助sed过滤掉+和-号即可。

    echo "$var" |sed 's/.//g'  | sed 's/-//g' | grep [^0-9] >/dev/null && echo "$var is not number" || echo "$var is number"

    4、简化代码,数还可能是百分数比如15%,还有可能是指数,可以让sed一次性全部过滤。将上面的代码修改为:

    echo "$var" |sed 's/.|-|+|%|^//g'  | grep [^0-9] >/dev/null && echo "$var is not number" || echo "$var is number"

    说明:在sed中可以使用或(|)运算符来表示过滤多个字符。以后可以随时把表示数的符号加入到里面,这样就算实现判断变量是字符串数,还是其它的字符。

  • 相关阅读:
    maven:读取程序版本号的三种方案
    有无目标的人生差10倍!赶紧和娃把新年计划做起来
    都怎么了,其实早就知道,但是一直没有找到答案……
    python添加tab键功能
    电影观后感
    ipset批量配置iptables
    Oracle 触发器,事物
    Oracle PL/SQL高级应用 视图 同义词 序列
    Oracle PL/SQL高级应用 存储过程
    Oracle PL/SQL高级应用 游标
  • 原文地址:https://www.cnblogs.com/liangyou666/p/10877630.html
Copyright © 2011-2022 走看看