学习的最大动力是想要更加减少重复性工作

  • 2019 年 10 月 27 日
  • 笔记

支持脚本。该脚本做成后,变动性很小。——这个调用脚本是写完主处理脚本后,发现主处理脚本变动频繁,想起来为了简化操作,就做了这么个支持脚本。

 1 #!bin/bash   2 #-------------脚本作用:-------------   3 #用于处理和调用另一个频繁改动的脚本。   4   5 #本人所用shell脚本都是在notepad++下写的   6 #无一例外,都需要执行cat filedos | tr -d 'r' > fileunix移除dos文件的回车符   7 #首先进入工作的bin目录下   8 #执行cat http://www.cnblogs.com/test/droprateH.sh | tr -d 'r' > agoodjob.sh   9 #执行bash agoodjob.sh 就可以调用另一个主逻辑脚本  10  11 #命令行提示符必须要进入/BIN/目录下DropRateTester.exe才能正确load关联的npc配置表。  12 #所有的文件路径都是以此为基础来写的  13  14 #处理脚本为可运行,并复制到当前目录下执行。执行完毕删除。  15 cat http://www.cnblogs.com/test/droprate.sh | tr -d 'r' > droprateunix.sh  16 ./droprateunix.sh  17 rm droprateunix.sh

主处理脚本,我还不会读取文件里的内容作为命令行的参数,所以用了excel的公式[="text"&A1&"text"]来生成处理的命令行

——其实主体处理部分,真正使用时是有上千条的。我不关心脚本执行时间,顶多十几分钟,喝个茶就好了。但是脚本臃肿很难忍受。

——于是请教很擅长shell脚本的程序员GG,他帮我优化,做了path变量定义和引用,还做了类似于函数的模块来调用。

——但他的方法我还没消化,就先贴下面我这个笨办法吧。呵呵。

 1 #!/bin/bash   2   3 #作用:调用现有工具DropRateTester.exe,批量查询并输出怪物掉落信息。   4 #使用:本脚本可直接修改,然后保存。不可以直接执行。   5 #亮点:依赖DropRateH.sh调用。进入bin/目录下,执行bash agoodjob.sh可调用该脚本。   6   7   8 #查询之前的处理   9 echo 开始运行时间`date`  10 #删除旧的查询结果  11 rm http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  12  13  14  15  16 #查询处理,以下语句用excel生成。  17 echo -e newxkd007 4 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe newxkd007 4 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  18 echo -e newxkd009 6 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe newxkd009 6 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  19 echo -e newxkd027 7 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe newxkd027 7 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  20 echo -e anpc006_01a 10 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc006_01a 10 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  21 echo -e anpc022_02 10 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc022_02 10 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  22 echo -e anpc004 12 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc004 12 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  23 echo -e anpc015sl 14 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc015sl 14 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  24 echo -e anpc003 10 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc003 10 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  25 echo -e anpc023 10 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc023 10 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  26 echo -e hnpc001d 9 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe hnpc001d 9 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  27 echo -e anpc004ss 12 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc004ss 12 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  28 echo -e anpc006_02 14 1000 'r'>> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt && ./DropRateTester.exe anpc006_02 14 100 >> http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt  29  30  31  32 #查询之后的处理  33 #对查询结果进行更合适的处理1、执行多个空格转换为1个空格 2、把空格替换为tab键  34 cp http://www.cnblogs.com/test/droprate/DropRateTesterResult.txt http://www.cnblogs.com/test/droprate/agoodresult.txt  35 cat http://www.cnblogs.com/test/droprate/agoodresult.txt | tr -s ' ' | tr ' ' 't'> AGoodJob/DropRateTesterResult.txt  36 rm http://www.cnblogs.com/test/droprate/agoodresult.txt  37 echo 结束运行时间`date`  38 echo ---------------------------------------------  39 echo  40 echo 查询结果位于当前目录AGoodJob/DropRateTesterResult.txt  41 echo 

在以上脚本中,我的重要收获是根据需求搜到了以下好用的方法:

tr -s ' '方法,把多个连续的空格替换为一个

tr ' ' 't'方法,把空格替换为tab键

这样处理后,可以直接把结果粘贴到excel中,方便进一步调用配置使用。因为策划执行的主要还是各种配置表。

“方法,把一个命令行的输出结果作为另一个命令行的参数

&&方法,两个命令行都执行,这个对于我用excel公式批量生成命令行很有用

echo -e 'r'方法,可以解析转义字符,不过我还是有点分不清换行符和回车符,干嘛两个系统要不一致?

另外非常熟练的使用了管道操作符,并非常清楚它们的用法和区别啦。