簡單的Shell指令碼實戰演練,測試菜鳥也可以輕鬆學會
之前投稿的《小白也能學會的Shell指令碼》大家都有看過麼?看過的小夥伴,有沒有自己嘗試用到工作中呢? 加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~
前一段時間,我測試了一個檔案傳輸元件,它有什麼功能呢?
支援多種規則配置,透過規則引擎進行策略化處理,支援傳送規則、接收規則,表示式等機制,能夠靈活地滿足檔案傳輸中的多種傳輸場景。
上面兩條只是一部分描述,簡單說就是,同一個計算機叢集,每臺伺服器都安裝好我們的軟體,然後就可以透過Web服務,直接在網頁上設計任意兩臺計算機直接的檔案傳輸,並且可以進行規則的配置。
為了更形象一點,把我們的產品截個圖,左邊是傳送節點,點開可以進行配置,右邊是接收節點,同樣點開可以進行配置。
這裡主要解釋一下,接收端規則:傳送端把目錄下所有檔案發往接收端,接收端只接收字首是deno的檔案(即deno開頭即可)。
為了測試不同的規則配置,我需要很多大小不同、檔名不同(字首不同)的檔案。
自從從上次學會了寫簡單的Shell指令碼後,很久沒有用武之地了,這次又能實戰演練了。
設計思路
1、我需要知道Linux系統下,有什麼命令可以生成檔案,還能指定檔名、檔案大小之類的。
2、我需要3個引數,檔案大小、檔案個數、檔案字首。
3、檔案個數,依然使用我們熟悉的for迴圈實現。
有了思路之後,就是實現了,生成檔案的命令,由於之前沒有接觸過,直接 搜尋。後面的思路,都是上次初學Shell指令碼GET的知識點。經過一番除錯和自我測試,有了下面的指令碼。
#! /bin/bash
#第一個引數$1:檔案大小
#第二個引數$2:檔案個數
#第三個引數$3:檔案字首
for((i=1;i<=$2;i++));
do
truncate -s $1M $3$i.file
echo "檔案 $3$i.file 建立完畢"
done
解釋一下 truncate,它的一般用法:truncate -s 1M demo.txt,意思是建立一個 1M 大小的檔案,檔名是 demo.txt。
開始完成了這就指令碼後,感覺好用極了,可是後來過了一段時間,再想去用它,我竟忘了輸入的引數和位置,只能開啟指令碼看一看。可是我想到了我們開發寫的指令碼和網路上開源的指令碼,人家是有幫助資訊的,不知道怎麼用的時候,一般在後面加上-h 或者--help。就比如我用來建立檔案的這個工具 truncate。下圖可以看到,我第一次輸入了truncate 命令沒有接任何引數,但是人家給出了幫助提示。第二次我使用了--help,人家就給出了更詳細的用法。
我也想給我的指令碼加上這樣的功能,這樣才能和別人分享我的指令碼。
模仿是人類的本能之一,於是我找到了伺服器上我們開發人員寫的 shell 指令碼學習了一下,再然後參考了一些網路資源(百度)。
學習的過程暫且不表,我先總結一下我學到的兩種方法:1、將幫助資訊寫在指令碼頭部;2、Shell 中寫一個方法,把幫助資訊寫到方法中。
兩個方法的區別就是幫助資訊位置不一樣,但是都是透過判斷輸入引數來輸出。第一個方法稍微複雜一下,因為要用正則提取寫到頭部的幫助資訊,不然程式不知道要輸出什麼。資訊寫到方法中的情況:
簡單解釋下這個指令碼內容,先定義了一個方法 usage,後面做了一個比較,如果為真,就執行後面括號中的內容即,usage 方法。
$#:使用指令碼時,傳入的引數個數。
-lt:檢測左邊的數是否小於右邊的,如果是,則返回 true,然後執行後面的 usage 方法,列印幫助資訊。
資訊放在頭部的情況:
看到下面那個箭頭沒有,用到了 awk 命令,這個命令可是有名,與 sed 和 grep 並稱linux 三劍客。後面還跟了挺長的好幾個引數,不懂的人看了真是懵。
其中的引數解釋:
-F 後面接的第一個引數是分隔符也就是###加空格。
$2:這個引數我直接修改指令碼為$1,測試了一下,發現輸出了下面的內容。
修改指令碼之前,執行輸出內容如下圖,簡單對比一下,應該能猜到,分隔符把每行分割成了 2 部分,1 代表前面一部分,2 代表後面一部分。
'/^###/ { print $2 }' :這一段的意思分兩部分解釋,/^###/,是正規表示式,意思匹配以###開頭的每一行,後面的部分{ print $2 },前面的正則匹配到了就會執行的動作,也就是列印了分隔符的第二段。
$0 : 這引數就是 shell 指令碼引數通用的,代表指令碼檔案本身。
最後:
可以我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!,其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。
這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2893577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 菜鳥學習SHELL第一課---地址本的指令碼(轉)指令碼
- 輕鬆使用“Explain Shell”指令碼來理解 Shell 命令AI指令碼
- 魔改 Locust:不寫程式碼,可以輕鬆構建簡單的 http 介面壓力測試HTTP
- PJzhang:鳥哥的linux私房菜-shell指令碼-上Linux指令碼
- 菜鳥學SSH(一)——Struts實現簡單登入(附原始碼)原始碼
- 菜鳥學Java(六)——簡單驗證碼生成(Java版)Java
- 菜鳥教程之工具使用(十)——用BlazeMeter錄製JMeter測試指令碼JMeter指令碼
- 效能測試必知必會:Shell指令碼設計實踐指南指令碼
- 菜鳥程式設計師都是怎樣寫程式碼的?你也可以學一手程式設計師
- 菜鳥學SSH(十五)——簡單模擬Hibernate實現原理
- 菜鳥學Java(二十一)——如何更好的進行單元測試——JUnitJava
- 菜鳥也想學習JSON解析JSON
- 優秀的功能測試也可以戰勝技術測試者
- 簡單的 Shell 指令碼入門教程指令碼
- 菜鳥學SSH(十三)——Spring容器IOC解析及簡單實現Spring
- 零基礎也能輕鬆學會IT開發
- shell指令碼和python指令碼實現批量ping IP測試指令碼Python
- Gin實戰演練
- 菜鳥要做架構師(三)——單元測試的七種境界架構
- 攻防演練 | 實戰加分,安芯網盾實時幫您輕鬆應對哥斯拉Webshell魔改Webshell
- 用Linux Shell指令碼輕鬆管理Radius伺服器Linux指令碼伺服器
- 風變程式設計,讓小白也能輕鬆學會!程式設計
- 菜鳥學Java(十六)——Jboss簡介Java
- 菜鳥如何學習自動化測試?新夢想
- Chrome瀏覽器除錯移動端網頁,測試人員也可以輕鬆debugChrome瀏覽器除錯網頁
- 菜鳥也玩mysql之學習筆記篇MySql筆記
- 菜鳥也裝Linux(轉)Linux
- Appium iOS 測試指令碼開發實戰APPiOS指令碼
- 如何通過簡單的shell指令碼操作MongoDB指令碼MongoDB
- shell指令碼的一則簡單運用案例指令碼
- 輕鬆學會原始碼編譯Vim 8.0原始碼編譯
- 小白也能操作Linux,十分鐘教你簡單的shell指令碼編寫邊學邊用Linux指令碼
- 簡單易懂的並查集演算法以及並查集實戰演練並查集演算法
- 雙11大幕拉開,菜鳥智慧機器人也將測試執行機器人
- 【shell 指令碼】算術測試需要使用(( ))指令碼
- 菜鳥圖解簡單連結串列(轉)圖解
- SVG 菜鳥的 Recharts 自定義圖表實戰SVGEcharts
- Shift鍵也可以用出新高度!學會這4個Excel技巧輕鬆快捷完成工作Excel