压缩工具的效果评估2

Posted on Fri 02 March 2012 in it

通过写这个脚本,搞清楚了Shell中的重定向、在陈萍的帮助下定位了FreeArc的编译错误、最后还重构了一下测试脚本。 这么多收获,一定要分享一下。

重定向知识的学习

标准输入:stdin,代码为 0 ;使用的方式为 < 标准输出:stdout,代码为 1 ;使用的方式为 1> 错误输出:stderr,代码为 2 ;使用的方式为 2>

> ##输出重定向到一个文件或设备 覆盖原来的文件 >! ##输出重定向到一个文件或设备 强制覆盖原来的文件 >> ##输出重定向到一个文件或设备 追加原来的文件 < ##输入重定向到一个程序

标准错误重定向符号 2> ##将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 2>> ##将一个标准错误输出重定向到一个文件或设备 追加到原来的文件 2>&1 ##将一个标准错误输出重定向到标准输出

& ##将一个标准错误输出重定向到一个文件或设备 覆盖原来的文件 c-shell |& ##将一个标准错误 管道 输送 到另一个命令作为输入

FreeArc 4 Linux只支持32位的操作系统

陈萍帮忙找到了FreeArc在64位系统下编译出错的原因:

要想让make正常工作,需要先修改makefile --注掉只支持windows环境的common.mak

include common.mak

--手动添加变量值 TEMPDIR=/home/liyan/FreeArc-0.666-sources/tmp GCC=g++

make过程中,报错如下:

g++ -c -fno-exceptions -fno-rtti -Wall -Wno-unknown-pragmas -Wno-sign-compare -Wno-conversion -O3 -march=i486 -mtune=pentiumpro -fomit-frame-pointer -fstrict-aliasing -ffast-math -fforce-addr -g0 -o /home/liyan/FreeArc-0.666-sources/tmp/Environment.o Environment.cpp Environment.cpp:1: 错误:您选择的 CPU 不支持 x86-64 指令集 Environment.cpp:1: 错误:您选择的 CPU 不支持 x86-64 指令集 make: *** [/home/liyan/FreeArc-0.666-sources/tmp/Environment.o] 错误 1

优化后的评估脚本

#!/bin/sh

##Author: ChenPing, LiYan

if [ "$1" = "" ]; then
        echo "Please name the test test_case"
        exit 1
fi
if [ "$2" = "" ]; then
        echo "Please enter compress file path"
        exit 1
fi

test_case=$1
src_path=$2

log_file=${test_case}-`date +%Y%m%d%H%M`.log

evaluate() {
type=$1
cmd=$2
echo "--------${type} begin">>${log_file}
(time ${cmd}) 2>>${log_file}
echo "--------${type} end">>${log_file}
}

echo runing case: `date` ${test_case}, compress path: ${src_path} > ${log_file}

evaluate zip "zip -9r ${test_case}.zip ${src_path}/*"
evaluate gzip "tar -czf ${test_case}.tar.gz ${src_path}/*"
evaluate bzip2 "tar -cjf ${test_case}.tar.bz2 ${src_path}/*"
evaluate 7zip "7za a -tzip ${test_case}.7z ${src_path}/*"
#evaluate bzip2-2 "bzip2 -9 -c ${src_path}/* > ${test_case}.bzip2.bz2"
#evaluate gzip-2 "gzip -9 -c ${src_path}/* > ${test_case}-gzip.gz"

echo runing case: done at `date +%D" "%r` >> ${log_file}