`
annan211
  • 浏览: 462485 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

shell 批量处理 字符串指令行

阅读更多
废话不说,直接看代码

 #!/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编程课件

    对于重复性或批量处理任务,如文件分类、文本插入、文件迁移、清理系统过期文件等,Shell脚本能够显著节省时间和精力。通过结合变量、条件判断、算术运算和循环控制,脚本可以迅速执行复杂任务,而无需在命令行中...

    批量更改文件名和文件内容

    在IT行业中,批量处理文件名...总之,通过熟练运用Shell脚本和相关工具,我们可以高效地批量处理文件名和文件内容,大大提高工作效率。无论是在日常的文件管理还是在自动化工作中,这些技能都是IT专业人士的必备工具。

    java调用shell

    `Runtime.getRuntime().exec(command)`方法接受一个字符串参数或字符串数组作为命令行指令,创建一个新的进程来执行这些指令,并返回一个`Process`对象,该对象可用于控制新进程并获取其输出和错误流。 ### 实现...

    Shell工具书

    基本的Bash命令包括`ls`(列出目录内容)、`cd`(切换目录)、`pwd`(显示当前工作目录)、`echo`(打印字符串)等。此外,Bash还支持管道符(|)、重定向(&gt;、&lt;)以及通配符(*、?)等功能,使得数据处理和文件操作...

    可以发送到FTP的代码

    在脚本开头定义了全局变量,并指定了字符串比较规则为数据库(即不区分大小写)。这些变量主要用于存储文件路径、FTP服务器信息等。 ##### 二、定制参数设置 ```vb strLocalFolderName = "E:\HstData\" ...

    Linux与UNIX+Shell编程指南

    8. **条件表达式**:`[[`...`]]`提供更丰富的条件判断,支持字符串比较和文件测试。 通过深入学习和实践这些知识点,你将能够熟练地利用Linux和UNIX Shell编写高效、自动化的脚本,提高工作效率。对于任何想要提升...

    Shell外壳运行.rar

    - grep:在文件中搜索特定字符串。 5. Shell在IT行业的应用 - 系统管理:Shell脚本常用于自动化系统维护任务,如备份、日志分析、服务监控等。 - 配置管理:在配置服务器、网络设备时,Shell脚本可以批量配置...

    Shell编程实战.docx

    name="Alice" # 定义一个字符串变量 age=25 # 定义一个整数变量 echo $name # 输出变量值 echo $age ``` 2.4 条件判断 2.4.1 test 命令测试 ```bash if [ -f "/path/to/file" ]; then echo "文件存在" else echo...

    LINUX与UNIX Shell编程指南

    变量用于存储数据,可以是字符串、数字或其他复杂类型。例如,我们可以定义一个变量来保存文件名: ```bash filename="example.txt" echo "The filename is: $filename" ``` 参数则是在运行脚本时传递给脚本的数据...

    LINUX与UNIX SHELL编程指南(part1)

    2. 文件搜索:使用find、grep、locate等命令寻找文件或字符串。 3. 文本处理:sed、awk和cut等工具用于文本的查找、替换、格式化和分割。 4. 流程控制:管道符(|)、重定向(&gt;、&lt;)和tee命令,用于连接命令和处理...

    linux 大全 关于 linux 操作 原理 shell 编程

    在文件中批量添加或替换字符串也是常见的需求,`:3,$s/^/some string /`会在每一行开头添加文字,`:%s/string1/string2/g`全局替换字符串。 另外,Vi支持同时编辑多个文件,通过`yy`和`p`命令可以在文件之间复制和...

    用gcc批量建mysql库表

    接着,这个SQL命令通过`system()`函数执行,该函数调用操作系统 shell 来运行命令行指令。 3. **导入表结构** 创建完数据库后,程序再次使用`sprintf()`构造另一个命令,这次是导入SQL文件来定义表结构。`mysql`...

    Android开发系统shell常用脚本

    - **搜索与替换**:`grep` 用于搜索包含特定字符串的行,`sed` 可以进行批量文本替换。 - **文件拼接**:`cat` 可以将多个文件内容合并到一个文件中。 4. **编译与构建** - **Makefile**:在Android开发中,...

    LINUX与UNIX SHELL编程指南1

    在Shell脚本中,单引号`' '`和双引号`" "`用于包裹字符串,它们之间的区别在于,单引号内的内容会被原样保留,而双引号则允许变量替换和某些特殊字符的转义。 这些知识点构成了Linux与Unix Shell编程的基础,理解...

    实验五 Linux 下的SHELL编程(一).pdf

    SHELL脚本能够帮助用户通过命令行界面执行一系列指令,实现批量处理、文件操作等任务,提高工作效率。在此,我们将深入探讨实验五中涉及到的两个核心知识点:Vi编辑器的使用和Shell脚本的基本知识。 首先,Vi编辑器...

    linux shell编程

    在这个过程中,Shell脚本扮演着编程语言的角色,可以编写一系列指令,实现批量处理、文件操作、系统管理等复杂任务。本资源集合了多个PDF文档,旨在提供全面的Linux Shell编程知识,方便读者一次性学习,提高效率。 ...

    linux shell 编程

    变量值默认为字符串类型,定义时等号两侧不应有空格。若值中包含空格,应使用双引号括起。 变量分为可变和只读两种,使用`readonly`关键字可以声明一个只读变量,如`readonly var=“Hello World!”`。要查看所有...

    11 openEuler shell脚本.pdf

    - 变量是存储数据的容器,可以用来保存字符串、数字等信息。 - 变量赋值使用 `=`,例如 `VAR="value"`。 - 使用变量时需要在变量名称前加上 `$` 符号,如 `echo "$VAR"`。 - **流程控制**: - **条件判断** (`...

    shell sed 详述

    通过 `sed` 提供的二十多种不同的函数参数,用户可以轻松组合出各种复杂的文本编辑任务,比如批量替换字符串、删除空白行等。由于 `sed` 通常以行为单位来处理文件,因此也被称为行编辑器。 #### 二、何时使用 sed ...

Global site tag (gtag.js) - Google Analytics