1.isNumber 2.命令可用 3.當前用戶是root |
1.isNumberide
判斷「字符串」是不是個數字:spa
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百分比ip
#!/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
運行效果:md5
[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.命令可用ci
腳本中,會用到判斷命令可用,或者某個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
腳