zoukankan      html  css  js  c++  java
  • shell 的有用函数

    1.isNumber 

    2.命令可用 

    3.当前用户是root

    1.isNumber


      判断“字符串”是否是个数字:

    declare chkNumber=0
    
    isNumber(){
            parameter1=$1
            repParameter1=$(echo $parameter1 | sed 's/[[:digit:]]//g' 2>/dev/null)
            decimalPoint=$(echo $repParameter1 | sed 's/.//' 2>/dev/null)
            local -i oriLength=${#parameter1}
            local -i repLength=${#repParameter1}
            local -i decLength=${#decimalPoint}
    
            [ $oriLength -gt 0 ] && [ $repLength -eq 0 ] && let chkNumber=1
            [ $oriLength -gt 0 ] && [ $repLength -eq 1 ] && [ $decLength -eq 0 ] && let chkNumber=2
    }

      字符串以位置参数形式传递进来,结果由变量“chkNumber”表示(不是数字就返回“0”,是整数返回“1”,是浮点数返回“2”)。

      使用案例:判断进程使用的cpu百分比

     1 #!/bin/bash
     2 # ps -C java -o %cpu
     3 
     4 declare -i CPUPERCENT=0
     5 declare -i counter=1
     6 declare PROG="java"
     7 declare ITEM1="pcpu"
     8 declare chkNumber=0
     9 declare pid=""
    10 
    11 isNumber(){
    12         parameter1=$1
    13         repParameter1=$(echo $parameter1 | sed 's/[[:digit:]]//g' 2>/dev/null)
    14         decimalPoint=$(echo $repParameter1 | sed 's/.//' 2>/dev/null)
    15         local -i oriLength=${#parameter1}
    16         local -i repLength=${#repParameter1}
    17         local -i decLength=${#decimalPoint}
    18 
    19         [ $oriLength -gt 0 ] && [ $repLength -eq 0 ] && let chkNumber=1
    20         [ $oriLength -gt 0 ] && [ $repLength -eq 1 ] && [ $decLength -eq 0 ] && let chkNumber=2
    21 }
    22 
    23 for i in $(ps -C java -o pid,$ITEM1)
    24 do
    25         chkNumber=0
    26         let counter=counter%2
    27         if [ 0 -eq $counter ]; then
    28                 isNumber $i
    29         else
    30                 pid=$i
    31         fi
    32 
    33         if [ $chkNumber -gt 0 ]; then
    34                 echo "pid is $pid, cpu used ${i}% by $PROG."
    35         fi
    36 
    37         let counter++
    38 done

      运行效果:

    [view@payqa2 ~]$ ./chkCPU
    pid is 3988, cpu used 0.0% by java.
    pid is 21116, cpu used 0.1% by java.
    pid is 27698, cpu used 0.1% by java.

    2.命令可用


      脚本中,会用到判断命令可用,或者某个rpm包存在。
      把需要判断的‘命令’、‘rpm包’分别赋值给变量packages、commands。当脚本调用后,变量 var_checkResult 为0时,表示‘命令’、‘rpm包’都可用、存在。

    packages=(tar bzip2 coreutils)
    commands=(tar bzip2 md5sum)
    declare -i k=0
    declare -i PackMaxLength=${#packages[@]}
    declare -i CommMaxLength=${#commands[@]}
    
    isResultOk() {
            if [ 0 -eq $var_checkResult ];then
                    let k=k+1
            fi
    }
    
    fun_chkPackages() {
            local -i i
    
            for((i=0; i<PackMaxLength; i++)); do
                    rpm -q ${packages[$i]}
                    var_checkResult=$?
                    isResultOk
            done
    }
    
    fun_chkCommands() {
            local -i i
    
            for((i=0; i<CommMaxLength; i++)); do
                    env which ${commands[$i]} 1>/dev/null
                    var_checkResult=$?
                    isResultOk
            done
    }
    
    fun_chkPackages
    fun_chkCommands
    let var_checkResult=CommMaxLength+PackMaxLength-k

    3.当前用户是root


      脚

    一切代码都是为了生活,一切生活都是调剂
  • 相关阅读:
    2018——测试与信仰
    面试必备----测试用例笔试题分享
    软件测试人员必备网络知识(一):什么是cookie?
    Postman和Selenium IDE开局自带红蓝BUFF属性,就问你要还是不要
    【Loadrunner】LR参数化:利用mysql数据库里面的数据进行参数化
    因果图法设计测试用例
    场景法设计测试用例
    Linux Centos7下安装Python
    Vmware安装与VMware下Linux系统安装
    Python运算符与表达式
  • 原文地址:https://www.cnblogs.com/argor/p/7920125.html
Copyright © 2011-2022 走看看