shell 的有用函数
|
1.isNumber 2.命令可用 3.当前用户是root |
1.isNumber
判断“字符串”是否是个数字:
declare chkNumber=
isNumber(){
parameter1=$
repParameter1=$(echo $parameter1 | sed 's/[[:digit:]]//g' >/dev/null)
decimalPoint=$(echo $repParameter1 | sed 's/\.//' >/dev/null)
local -i oriLength=${#parameter1}
local -i repLength=${#repParameter1}
local -i decLength=${#decimalPoint}
[ $oriLength -gt ] && [ $repLength -eq ] && let chkNumber=
[ $oriLength -gt ] && [ $repLength -eq ] && [ $decLength -eq ] && let chkNumber=
}
字符串以位置参数形式传递进来,结果由变量“chkNumber”表示(不是数字就返回“0”,是整数返回“1”,是浮点数返回“2”)。
使用案例:判断进程使用的cpu百分比
#!/bin/bash
# ps -C java -o %cpu declare -i CPUPERCENT=
declare -i counter=
declare PROG="java"
declare ITEM1="pcpu"
declare chkNumber=
declare pid="" isNumber(){
parameter1=$
repParameter1=$(echo $parameter1 | sed 's/[[:digit:]]//g' >/dev/null)
decimalPoint=$(echo $repParameter1 | sed 's/\.//' >/dev/null)
local -i oriLength=${#parameter1}
local -i repLength=${#repParameter1}
local -i decLength=${#decimalPoint} [ $oriLength -gt ] && [ $repLength -eq ] && let chkNumber=
[ $oriLength -gt ] && [ $repLength -eq ] && [ $decLength -eq ] && let chkNumber=
} for i in $(ps -C java -o pid,$ITEM1)
do
chkNumber=
let counter=counter%
if [ -eq $counter ]; then
isNumber $i
else
pid=$i
fi if [ $chkNumber -gt ]; then
echo "pid is $pid, cpu used ${i}% by $PROG."
fi let counter++
done
运行效果:
[view@payqa2 ~]$ ./chkCPU
pid is , cpu used 0.0% by java.
pid is , cpu used 0.1% by java.
pid is , 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=
declare -i PackMaxLength=${#packages[@]}
declare -i CommMaxLength=${#commands[@]} isResultOk() {
if [ -eq $var_checkResult ];then
let k=k+
fi
} fun_chkPackages() {
local -i i for((i=; i<PackMaxLength; i++)); do
rpm -q ${packages[$i]}
var_checkResult=$?
isResultOk
done
} fun_chkCommands() {
local -i i for((i=; i<CommMaxLength; i++)); do
env which ${commands[$i]} >/dev/null
var_checkResult=$?
isResultOk
done
} fun_chkPackages
fun_chkCommands
let var_checkResult=CommMaxLength+PackMaxLength-k
3.当前用户是root
脚
shell 的有用函数的更多相关文章
- Linux centosVMware shell中的函数、shell中的数组、
一.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function _name() { command ...
- shell流程控制&函数
条件 if-then-elif-then-fi if的条件部分经常使用test EXPRESSION或[ EXPRESSION ]实现,test的用法可以参见test if 条件1 #if 条件1;t ...
- shell实现trim函数-去除字符串两侧的空格(包括tab,space键)
shell实现trim函数效果去除字符串两侧的空格,以下三个命令等价,都能实现 sed 's/^\s*//' totrim.txt |sed 's/\s*$//'>trimed.txtsed ' ...
- shell中的函数、数组、报警系统脚本
1.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这 个小单元的名字即可.格式: function f_name() {commond} ...
- shell编程之函数
一.函数定义和调用 函数是Shell脚本中自定义的一系列执行命令,一般来说函数应该设置有返回值(正确返回0,错误返回非0).对于错误返回,可以定义其他非0正值来细化错误.使用函数最大的好处是可避免出现 ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- 小苏的Shell编程笔记之六--Shell中的函数
http://xiaosu.blog.51cto.com/2914416/531247 Shell函数类似于Shell脚本,里面存放了一系列的指令,不过Shell的函数存在于内存,而不是硬盘文件,所以 ...
- shell高级-----创建函数
基本脚本函数 1.创建函数 有两种格式可以用来在bash shell脚本中创建函数.第一种采用关键字function.后跟分配给该代码的函数名. function name { commands } ...
- Oracle数据库有用函数
有用函数 DECODE 语法例如以下: DECODE(value, if1, then1, if2,then2,if3,then3, . . . else ) Value 代表某个表的不论什么类型的 ...
随机推荐
- SpringBoot+Maven 多模块项目的构建、运行、打包
SpringBoot+Maven 多模块项目的构建.运行.打包 https://blog.csdn.net/zekeTao/article/details/79413919
- 电信版华为MATE7 EMUI4.0回退3.1和3.0教程与中转包
mate7升级6.0后遇到很多问题,想回退版本,找了很多教程,现在总结一下用中转包回退.EMUI4.0回退3.1,先下载B500中转包,将dload复制到2G以上内存卡根目录,不要三键强刷,会卡在开机 ...
- Quartz定时任务详解一
以下是我在应用的的一个基本配置: #---------调度器属性---------------- org.quartz.scheduler.instanceName = TestScheduler o ...
- php代码覆盖率执行
我们做平台项目时,我会为整个项目核心架构拆分成三部分:前段(pc展示.mobile展示).网关.中间层 中间层业务逻辑开发人员怎么保证自己的业务逻辑是严谨的,每个测试用例都run codecover呢 ...
- Java线程池管理及分布式Hadoop调度框架搭建
平时的开发中线程是个少不了的东西,比如tomcat里的servlet就是线程,没有线程我们如何提供多用户访问呢?不过很多刚开始接触线程的开发工程师却在这个上面吃了不少苦头. 怎么做一套简便的线程开发模 ...
- 使用R语言-为矩阵(表格)的行列命名
转自:http://www.dataguru.cn/article-2217-1.html R语言中经常进行矩阵(表格)数据的处理,在纷繁复杂的数据中,为其行列定义一个名字变得尤为重要.在处理巨量数据 ...
- [ZZ]Appium 文档翻译
http://testerhome.com/topics/150 Appium 是一个开源的,适用于原生或混合移动应用应用( hybrid mobile apps )的自动化测试平台. Appium ...
- PAT 乙级 1079 延迟的回文数(20 分)
1079 延迟的回文数(20 分) 给定一个 k+1 位的正整数 N,写成 ak⋯a1a0 的形式,其中对所有 i 有 0≤ai<10 且 ak>0.N 被称 ...
- java1.8新特性(optional 使用)
经常在程序中出现 java.lang.NullPointerException 为了避免 报错,总是要进行一些 是否为null 的if else 判断 ,1.8 可以使用optional 类 来简 ...
- NodeJs使用async让代码按顺序串行执行
描述 由于nodejs中的函数调用都是异步执行的,而笔者在工程开发中函数A需要四五个参数,而这四五个参数值都是通过函数调用获得,因此按顺序写代码时,执行到函数A时,往往函数A需要的参数值因为参数的异步 ...