zoukankan      html  css  js  c++  java
  • Bash Shell 整数 浮点数 目录 字符串 判断 比较

    用 Bash Shell 做判断,简单起见:

    1. 统一使用 if [[ ]] 即两个中括号格式,废弃 [](())格式,后面两种得出的结论常与我们的想象有较大差距;
    2. Bash Shell 不能做浮点数判断,请使用bc、awk,后文附;
    3. Bash Shell 中整数判断使用的是类似 -gt 的字符形式,常见的 > 被使用在字符串ASCII序的比较上,比较混淆;
    4. -e 等是单元运算符,用作 test ;

    简单的判断形式

    strA="helloworld"
    strB="low"
    if [[ $strA =~ $strB ]]
    then
        echo "包含"
    else
        echo "不包含"
    fi
    

    判断字符串长度是否为0(空串)

    -z 判断字符串长度是否为0,仅仅是长度判断,如果有多个空格组成的字符串显然长度不为0:

    1. v1="" -z 判断为 true;
    2. v2=" " -z 判断为 false;
    3. v3=" " -z 判断为 false;

    判断字符串内容是否为空(空串或由空格换行等组成)

    使用 tr 给trim 掉字符串中所有空格,如果给trim干净了,则认为内容为空。

    c="    
    
     "
    
    str="$(echo "$c" | tr -d '[:space:]')"
    
    if [[ -z "$str" ]]
    then
    	echo "true"
    else
    	echo "false"
    fi
    
    > true
    

    判断浮点数

    使用 bc 做浮点数判断

    key1="12.3"
    result="12.2"
    if [ $(bc <<< "$result <= $key1") -eq 1 ]
        then
        # some code here
    fi
    

    使用awk做浮点数判断

    key1=12.3
    result=12.5
    var=$(awk 'BEGIN{ print "'$key1'"<"'$result'" }')    
    # or var=$(awk -v key=$key1 -v result=$result 'BEGIN{print result<key?1:0}')
    # or var=$(awk 'BEGIN{print "'$result'"<"'$key1'"?1:0}')
    # or 
    if [ "$var" -eq 1 ];then
      echo "do something"
    else
      echo "result more than key"
    fi
    
  • 相关阅读:
    洛谷 P1725 琪露诺 题解
    洛谷 P1714 切蛋糕 题解
    洛谷 P1352 没有上司的舞会 题解
    洛谷 P1194 买礼物 题解
    洛谷 P2872 [USACO07DEC]道路建设Building Roads 题解
    OpenCV之头文件分析
    电路学习之二极管(一)
    二极管学习(一)
    STL之vetor 排序
    小波分析(二)
  • 原文地址:https://www.cnblogs.com/futeng/p/7423954.html
Copyright © 2011-2022 走看看