#!/usr/bin/ksh
# check pkg size
# if the size is 5% greater than predecessor, then print warning message
# else print the pkg size
#set -x
filesize()
{
pkg=$1
echo `du -k $pkg|tail -1|cut -f 1`
}
compare_pkgsize()
{
pkg1=$1
pkg2=$2
percentage=$3||5
pkg1_size=`filesize $pkg1`
pkg2_size=`filesize $pkg2`
gt_percent $pkg1_size $pkg2_size $percentage
}
compare_label_pkgsize()
{
label1=$1
label2=$2
percentage=$3||5
nightly_build_dir=$4||'/mot/proj/wibb_bts/daily/'
label1_size=`filesize $nightly_build_dir/$label1`
label2_size=`filesize $nightly_build_dir/$label2`
gt_percent $label1_size $label2_size $percentage
}
gt_percent()
{
size1=$1
size2=$2
percentage=$3
inc_size=`echo "$size1-$size2" | bc`
inc_by_percent=`echo "scale=2;$size2*(1+$percentage/100)" | bc`
#echo "increase size: $inc_size, increse by percent: $inc_by_percent"
is_ge=`echo "$size1 $inc_by_percent" | awk '{printf "%d",$1-$2}'`
#echo "is greater than: $is_ge"
if [ $is_ge -ge 0 ]; then
echo "$size1 kb, predecessor $size2 kb, file size incresed $percentage percent than predecessor!"
else
echo "$size1 kb"
fi
}
if [ $# -lt 2 ]; then
echo '''
Usage:
cksize file1 file2 [percentage]
'''
exit 1
fi
#the comparation should depends on 2 files existing
if [ -e "$1" ] && [ -e "$2" ]; then
if [ -n "$3" ]; then
percentage=$3
#echo "percentage: $percentage"
else
percentage=5
fi
compare_pkgsize $1 $2 $percentage
else
echo "`filesize $1` kb"
fi
分享到:
相关推荐
总之,PDKSH-5.2.14-1.i386.rpm是一个适用于32位Linux系统的Korn Shell实现,它提供了丰富的脚本编程功能,并通过RPM格式进行分发和管理。熟悉并掌握PDKSH的使用,对于Linux环境下的工作至关重要。
这个脚本会遍历当前目录下的所有.txt文件,使用`stat`命令获取文件大小,并打印出来。 总结一下,Korn Shell(ksh)是Linux和Unix环境中的一种强大Shell,它结合了Bourne Shell的简洁和许多高级功能。学习和掌握KSH...
5. **tar**:打包和解压文件,常与gzip或bzip2结合使用以减小文件大小。 6. **grep家族**:如`egrep`和`fgrep`,增强搜索功能。 7. **ps** 和 **top**:查看系统进程状态,监控系统资源使用情况。 五、学习资源 这...
以下是一个简单的Shell脚本例子,用于找出目录中所有大小超过1MB的文件: ```bash #!/bin/bash for file in *; do if [[ -f "$file" && $(du -b "$file" | cut -f1) -gt 1048576 ]]; then echo "File $file is ...
常见的Shell有Bash(Bourne-Again SHell)、C Shell、Korn Shell和Z Shell等,其中Bash是大多数现代Linux发行版的默认Shell。学习Shell编程意味着你要熟悉Shell语法,包括变量、条件语句、循环、函数等。 **变量**...
条件测试(如`[ -f file ]`检查文件是否存在,`[[ $a -gt $b ]]`比较数字大小)与控制流程(如`if-else`,`case`,`for`,`while`,`until`循环)是编写逻辑复杂脚本的重要组成部分。学会这些,能让你的脚本更加灵活...
例如,一个简单的Shell脚本可以用于备份MySQL数据库,该脚本中可能包含使用date命令获取日期,使用du命令计算数据库文件的大小,将结果输出到临时文件,并在完成备份后清理临时文件。通过编写这类脚本,用户可以加深...
常见的Shell有Bash(Bourne-Again SHell)、C Shell、Korn Shell和Z Shell等。 2. 脚本结构:一个基本的Shell脚本通常包含shebang(#!/bin/bash),定义解释器;变量声明;命令行语句;条件语句;循环结构;函数等...
Linux提供了多种Shell供用户选择,主要包括Bourne shell (bsh)、C shell (csh)、Korn shell (ksh)等。这些Shell各有特点: 1. **Bourne shell**: 由Steven Bourne开发,用于解决早期Unix系统的不足之处。Bourne ...
- **文件属性**: 文件属性包括但不限于文件类型、大小、所有者、权限和最后修改时间等。这些信息可通过 `stat` 和 `fstat` 函数获取。 #### 4. 文件名与路径名 - **文件名规则**: 文件名不能包含斜线(`/`)和空字符...
常见的Shell有Bash(Bourne-Again SHell)、C Shell、Korn Shell等。编写Shell脚本可以实现自动化任务,提高工作效率。以下是一些基础的Shell编程元素: 1. 变量:用于存储数据,例如`name="John"`。 2. 条件语句:...
- 文件属性主要包括文件类型、大小、拥有者、权限设置以及最近一次修改的时间等。 - 第4章将详细介绍文件属性相关的API函数 `stat` 和 `fstat`。 - **1.3.2 文件名与路径名** - 文件名不允许包含斜线 `/` 和空...
`ls -lh`会以人类可读的格式显示文件大小和其他信息,包括文件类型。例如,`d`表示目录,`b`和`c`分别代表块设备和字符设备,通常位于`/dev/`目录下。`p`表示命令管道,`s`表示套接字文件。文件权限可以通过`chmod`...
- `-s`: 检查文件大小是否大于零。 - 布尔运算符: - `!`: 逻辑非。 - `-a`: 逻辑与。 - `-o`: 逻辑或。 综上所述,Linux Shell提供了丰富的功能来帮助用户高效地管理和操作Linux系统。掌握上述基本概念和命令...
每个目录都是一个包含目录项的文件,目录项记录了文件的名称、类型、大小、权限等属性。 - **文件名规范**:在UNIX中,文件名不能包含斜线(`/`)和空字符(null),但除了这两个字符外,理论上任何字符都可以用作...
- **ksh (Korn Shell):** - Bourne Shell的扩展,包含更多高级功能。 - 对于初学者来说可能较为复杂。 #### 二、Bash Shell 的优势与特性 **2.1 Bash 作为GNU Shell** - **GNU 计划背景:** - 为类UNIX系统...
stat()函数可以用来获取文件的状态信息,如文件大小、文件类型、访问权限等。 此外,书中还提到了标准C库函数,比如printf()和scanf(),这些函数在Unix环境下同样可用,并用于格式化的输入输出操作。标准输入输出...
`du -b`命令用于获取文件大小,`cut -f1`提取出第一个字段(即大小),并与1MB比较。 最后,值得一提的是,shell编程还有许多高级特性,如函数式编程、数组、过程替换、信号处理等。持续学习和实践是掌握shell编程...
- **Korn Shell (ksh)**:结合了Bourne Shell和C Shell的优点。 - **C Shell (csh)**:最初由Bill Joy开发,具有类似C语言的语法结构。 #### 3. Shell的工作原理 当用户通过终端输入命令后,Shell会解析这些命令,...