• 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中可以使用或(|)运算符来表示过滤多个字符。以后可以随时把表示数的符号加入到里面,这样就算实现判断变量是字符串数,还是其它的字符。

  • 相关阅读:
    ubuntu18.04更新源
    机器学习网址
    ubuntu18.04下安装Anaconda及numpy、matplotlib
    google云使用记录
    tensorflow省钱方案-ml-engine
    Angular 创建项目
    Angular 环境搭建
    android APP国际化一键切换实现
    android 上下滑动标题栏和状态栏改变颜色实现
    android滑动标题栏渐变实现
  • 原文地址:https://www.cnblogs.com/liangyou666/p/10877630.html
Copyright © 2020-2023  润新知