Shell(18):Shell脚本从文件中读取数据并赋值到命令行中执行

Shell脚步从文件中读取数据并赋值到命令行中执行

前提:本次需要测试性能测试,需要每次手动改动参数进行测试并获取执行结果,但是手动执行太繁琐,故编写shell循环执行。

java com.cipherxxx.crypto.pertest.SM4PerTest gcm 16 1 10000
#后面这几位都是参数:$ms $sz $ths $sloop

解决办法:写1个脚本执行后,执行结果在文件里,直接查看结果即可,以下是脚本。

一、数据列表:demo.txt

{"moshi":"ecb","size":"16","threads":"1","loop":"6000000"}
{"moshi":"ecb","size":"16","threads":"4","loop":"6000000"}
{"moshi":"ecb","size":"16","threads":"8","loop":"3000000"}
{"moshi":"ecb","size":"16","threads":"16","loop":"1600000"}
{"moshi":"ecb","size":"16","threads":"32","loop":"700000"}

二、demo.sh脚本

#!/bin/bash

while read line
do

echo $line>line.txt
#echo $moshi
moshi=$(cat line.txt | sed 's/,/\n/g' | grep "moshi" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g')
ms=$(echo $moshi | tr -d '"')

#echo $size
size=$(cat line.txt | sed 's/,/\n/g' | grep "size" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g')
sz=$(echo $size | tr -d '"')

#echo $ths
threads=$(cat line.txt | sed 's/,/\n/g' | grep "threads" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g')
ths=$(echo $threads | tr -d '"')

#echo $sloop
loop=$(cat line.txt | sed 's/,/\n/g' | grep "loop" | sed 's/:/\n/g' | sed '1d' | sed 's/}//g')
sloop=$(echo $loop | tr -d '"')


#java com.cipherxxx.crypto.pertest.SM4PerTest gcm 1048576 32 100

echo "java com.cipherxxx.crypto.pertest.SM4PerTest $ms $sz $ths $sloop" >> result.txt
echo "moshi: $ms,size: $sz,threads:$ths, sloop: $sloop" >> result.txt
java com.cipherxxx.crypto.pertest.SM4PerTest $ms $sz $ths $sloop>> result.txt           
echo "===============================================">>result.txt

  
done<demo.txt     #从demo.txt获取文件

详细分析请参考:
https://blog.csdn.net/fen_fen/article/details/108545908


版权声明:本文为fen_fen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。