废话不说,直接看代码
#!/bin/bash
#file_name="curl_test.txt"
#cur_dateTime="`date +%Y-%m-%d-%H-%m-%s`"
:<<!
@date 2018-03-12
@author Jeff.jing
@desc
使用规则:
1 脚本需要有执行权限 chmod 755
2 同目录需要有测试单元脚本 curl-test.txt
脚本初始化规则
1 测试脚本中 通用型替换符应被命名为 key_space_word
邮箱或mobile 应相应命名为 home_email_key_space/work_email_key_space/ mobile_key_space
如有新增 添加模板即可。
!
result_file="result.txt"
tmp_file='curl.tmp'
tmp_result_file='result.tmp'
tmp_uuid='tmp_uuid'
line_tmp='line_tmp'
source_file='curl-test.txt'
error_file='test-error.txt'
test_code='test_code'
error_count=0
total_count=0;
echo "ecf test betch hand is begin,please wait a second..."
#临时文件与目录处理
if [ ! -f $source_file ]; then
echo $source_file " is not found,please check it and try again later !"
exit 1
fi
if [[ ! -s $source_file ]];then
echo $source_file " is is in existence but nothing in it ,please check it and try again later !"
exit 1
fi
if [ -f $result_file ]; then
rm $result_file
fi
if [ -f $tmp_file ]; then
rm $tmp_file
fi
if [ -f $tmp_result_file ]; then
rm $tmp_result_file
fi
if [ -f $tmp_uuid ]; then
rm $tmp_uuid
fi
if [ -f $line_tmp ]; then
rm $line_tmp
fi
if [ -f $error_file ]; then
rm $error_file
fi
if [ -f $test_code ]; then
rm $test_code
fi
touch $result_file
touch $tmp_file
touch $tmp_uuid
touch $tmp_result_file
touch $line_tmp
touch $error_file
touch $test_code
#数组检查
function xrsh_arrhasitem()
{
local _xrsh_tmp
local ok_code=`echo "$1"`
for _xrsh_tmp in ${ok_code[*]}; do
if test "$2" = "$_xrsh_tmp"; then
echo yes
return
fi
done
echo no
}
function rand(){
min=$1
max=$(($2-$min+1))
num=$(($RANDOM+1000000000)) #增加一个10位的数再求余
echo $(($num%$max+$min))
}
function uuid_ran(){
cat /proc/sys/kernel/random/uuid>$tmp_uuid
uuid_ran=$(cat $tmp_uuid)
echo $uuid_ran
}
# 1 格式化处理原文件
sed '/^#.*\|^$/d' $source_file>$tmp_file
sed -i 's/\\/\\\\\\/g' $tmp_file
# 2 临时文件、目录更新
while read line
do
let total_count++
rnd=$(rand 400000 500000)
uuid_str=$(uuid_ran)
key_word='ecf-test-'${uuid_str:0:15}$rnd
#echo $key_word
echo -E $line > $line_tmp
#curl_test=${line/key_space_word/$key_word}
sed -i "s/key_space_word/$key_word/g" $line_tmp
#替换phone phone-> '+1050000'$rnd
phone='+1050000'$rnd
#curl_test=${curl_test/phone_key_space/$phone}
sed -i "s/mobile_key_space/$phone/g" $line_tmp
work_phone='+1050089'$rnd
#curl_test=${curl_test/phone_key_space/$phone}
sed -i "s/work_phone_key_space/$work_phone/g" $line_tmp
#替换邮箱 emial->key_word@eric.com
home_email=$key_word'@home.com'
#curl_test=${curl_test/email_key_space/$email}
sed -i "s/home_email_key_space/$home_email/g" $line_tmp
work_email=$(uuid_ran)'@work.com'
sed -i "s/work_email_key_space/$work_email/g" $line_tmp
eq='eq "'
sed -i "s/$eq/$work_email/g" $line_tmp
#cat $line_tmp
#uuid_ran=${uuid:0:14}
#key_space_word=$uuid_ran$rnd
#echo $key_space_word
#eval $line >> $tmp_result_file
shell_line=$(cat $line_tmp)
#echo " shell code is : "$shell_line
eval $shell_line > $tmp_result_file
#cat $tmp_result_file
tmp_result=$(cat $tmp_result_file)
echo "return result is : "$(head -1 $tmp_result_file)>> $result_file
echo "return schema is : " >> $result_file
echo $tmp_result >> $result_file
#换行符
echo >> $result_file
#cat 'curl result is : '$tmp_result_file
xrsh_tmp=`echo ${ok_code[*]}`
http_code=$(head -1 $tmp_result_file | awk '{print$2}')
#echo "http_code is "$http_code
if [ ! -n "$http_code" ] ;then
http_code=400
fi
status=$(xrsh_arrhasitem "$xrsh_tmp" $http_code)
echo $status > $test_code
#if test $(cat $test_code) -eq "yes" ; then
if [ $http_code -eq 200 -o $http_code -eq 201 -o $http_code -eq 100 ]
then
echo "test is ok !"
else
echo "some error has aappeanded and http_code is "$http_code" , so write it to one error file "
echo "http code is : "$http_code >>$error_file
echo "error request is : "$shell_line>>$error_file
echo $tmp_result >> $error_file
let error_count++
fi
done <$tmp_file
echo "There are altogether " $total_count" test has been executed, error test is " $error_count" ,check "$error_file " or "$result_file" for detail ."
rm $tmp_file
rm $tmp_result_file
rm $tmp_uuid
rm $line_tmp
rm $test_code
附件中只应参考 curl-test.txt文件 代码以博客文本为主。
分享到:
相关推荐
对于重复性或批量处理任务,如文件分类、文本插入、文件迁移、清理系统过期文件等,Shell脚本能够显著节省时间和精力。通过结合变量、条件判断、算术运算和循环控制,脚本可以迅速执行复杂任务,而无需在命令行中...
在IT行业中,批量处理文件名...总之,通过熟练运用Shell脚本和相关工具,我们可以高效地批量处理文件名和文件内容,大大提高工作效率。无论是在日常的文件管理还是在自动化工作中,这些技能都是IT专业人士的必备工具。
`Runtime.getRuntime().exec(command)`方法接受一个字符串参数或字符串数组作为命令行指令,创建一个新的进程来执行这些指令,并返回一个`Process`对象,该对象可用于控制新进程并获取其输出和错误流。 ### 实现...
基本的Bash命令包括`ls`(列出目录内容)、`cd`(切换目录)、`pwd`(显示当前工作目录)、`echo`(打印字符串)等。此外,Bash还支持管道符(|)、重定向(>、<)以及通配符(*、?)等功能,使得数据处理和文件操作...
在脚本开头定义了全局变量,并指定了字符串比较规则为数据库(即不区分大小写)。这些变量主要用于存储文件路径、FTP服务器信息等。 ##### 二、定制参数设置 ```vb strLocalFolderName = "E:\HstData\" ...
8. **条件表达式**:`[[`...`]]`提供更丰富的条件判断,支持字符串比较和文件测试。 通过深入学习和实践这些知识点,你将能够熟练地利用Linux和UNIX Shell编写高效、自动化的脚本,提高工作效率。对于任何想要提升...
- grep:在文件中搜索特定字符串。 5. Shell在IT行业的应用 - 系统管理:Shell脚本常用于自动化系统维护任务,如备份、日志分析、服务监控等。 - 配置管理:在配置服务器、网络设备时,Shell脚本可以批量配置...
name="Alice" # 定义一个字符串变量 age=25 # 定义一个整数变量 echo $name # 输出变量值 echo $age ``` 2.4 条件判断 2.4.1 test 命令测试 ```bash if [ -f "/path/to/file" ]; then echo "文件存在" else echo...
变量用于存储数据,可以是字符串、数字或其他复杂类型。例如,我们可以定义一个变量来保存文件名: ```bash filename="example.txt" echo "The filename is: $filename" ``` 参数则是在运行脚本时传递给脚本的数据...
2. 文件搜索:使用find、grep、locate等命令寻找文件或字符串。 3. 文本处理:sed、awk和cut等工具用于文本的查找、替换、格式化和分割。 4. 流程控制:管道符(|)、重定向(>、<)和tee命令,用于连接命令和处理...
在文件中批量添加或替换字符串也是常见的需求,`:3,$s/^/some string /`会在每一行开头添加文字,`:%s/string1/string2/g`全局替换字符串。 另外,Vi支持同时编辑多个文件,通过`yy`和`p`命令可以在文件之间复制和...
接着,这个SQL命令通过`system()`函数执行,该函数调用操作系统 shell 来运行命令行指令。 3. **导入表结构** 创建完数据库后,程序再次使用`sprintf()`构造另一个命令,这次是导入SQL文件来定义表结构。`mysql`...
- **搜索与替换**:`grep` 用于搜索包含特定字符串的行,`sed` 可以进行批量文本替换。 - **文件拼接**:`cat` 可以将多个文件内容合并到一个文件中。 4. **编译与构建** - **Makefile**:在Android开发中,...
在Shell脚本中,单引号`' '`和双引号`" "`用于包裹字符串,它们之间的区别在于,单引号内的内容会被原样保留,而双引号则允许变量替换和某些特殊字符的转义。 这些知识点构成了Linux与Unix Shell编程的基础,理解...
SHELL脚本能够帮助用户通过命令行界面执行一系列指令,实现批量处理、文件操作等任务,提高工作效率。在此,我们将深入探讨实验五中涉及到的两个核心知识点:Vi编辑器的使用和Shell脚本的基本知识。 首先,Vi编辑器...
在这个过程中,Shell脚本扮演着编程语言的角色,可以编写一系列指令,实现批量处理、文件操作、系统管理等复杂任务。本资源集合了多个PDF文档,旨在提供全面的Linux Shell编程知识,方便读者一次性学习,提高效率。 ...
变量值默认为字符串类型,定义时等号两侧不应有空格。若值中包含空格,应使用双引号括起。 变量分为可变和只读两种,使用`readonly`关键字可以声明一个只读变量,如`readonly var=“Hello World!”`。要查看所有...
- 变量是存储数据的容器,可以用来保存字符串、数字等信息。 - 变量赋值使用 `=`,例如 `VAR="value"`。 - 使用变量时需要在变量名称前加上 `$` 符号,如 `echo "$VAR"`。 - **流程控制**: - **条件判断** (`...
通过 `sed` 提供的二十多种不同的函数参数,用户可以轻松组合出各种复杂的文本编辑任务,比如批量替换字符串、删除空白行等。由于 `sed` 通常以行为单位来处理文件,因此也被称为行编辑器。 #### 二、何时使用 sed ...