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百分比

#!/bin/bash
# ps -C java -o %cpu

declare -i CPUPERCENT=0
declare -i counter=1
declare PROG="java"
declare ITEM1="pcpu"
declare chkNumber=0
declare pid=""

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
}

for i in $(ps -C java -o pid,$ITEM1)
do
        chkNumber=0
        let counter=counter%2
        if [ 0 -eq $counter ]; then
                isNumber $i
        else
                pid=$i
        fi

        if [ $chkNumber -gt 0 ]; then
                echo "pid is $pid, cpu used ${i}% by $PROG."
        fi

        let counter++
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/dev/null
                var_checkResult=$?
                isResultOk
        done
}

fun_chkPackages
fun_chkCommands
let var_checkResult=CommMaxLength+PackMaxLength-k


3.当前用户是root


  脚