2017年5月4日 星期四

[Linux] 利用 shell script 自動餵待測程式測試資料的方法

利用 shell script 自動餵待測程式測試資料的方法

拖了一個禮拜才著手進行撰寫

我想利用 Linux shell 自動測試的這篇文章可以延伸出非常多有趣的主題

經過 培任 的推薦

決定利用資料流控制 <  和 txt 檔來作為自動餵入測試資料的工具



自動餵入測試資料指令方法


bash shell script 程式設計

方法1

有一種方法如下,在 cmd 裡面先輸入要執行的程式的指令

配合輸出資料重新導向的 < 操作符號(output redirection operator)

後面接上要輸入的測試資料檔案,就像下方的程式碼[1]

./程式執行檔  <  測試資料.txt 

(若在檔案資料夾下,可以不加 ./ )

方法2


利用 cat  讀取資料[2][4],再利用 pipe 指令 |  把 前面指令的 stdout 資料轉到|後面指令的 stdin裡
cat 測試資料 | ./程式執行檔

(若在檔案資料夾下,可以不加 ./ )

以上兩個指令,程式就會自動把測試資料輸入,並且自動執行,並把輸出結果列印在cmd裡


說明

. / 的意思[3]

這邊的 . 是指現在所在的資料夾路徑位置,兩個點 .. 代表上一層的父目錄

/ 就是指資料夾,兩個合在一起就變成現在這個資料夾底

例如 ./ file1 就是執行目前所在資料夾底下的 file 1

cat 指令


cat 指令是Linxu中相當常用的指令,它含有以下幾個功能

1. 讀檔

純讀檔

在 cmd 中輸入

cat file1

並按下Enter後,就會以全文字模式(all tex mode)印出檔案內容

讀檔並把資料寫入別的檔案

cat file1  file2

將 file 1 的內容讀出來,並寫入file 2

2. 連鎖(同時以字串顯示內容)

同時以全文字方式顯示多個檔案的內容

cat file1 file2 ... filen

當然也可以多個檔案開起來之後寫入同一份檔案中
cat file1 file2 file3 > file4

I/O Redirection 

>  or  >> ?

關於輸出重新導向的操作符號,> 不是一個便當吃不夠不會吃兩個的問題

如果在cmd裡面輸入

ls > ls.txt
是把 ls 的內容覆蓋過去ls.txt 原本的內容並且寫入進去

那如果再加入一個 >

ls >> ls.txt
則是保留原始ls.txt

並把 ls 的內容,寫入到 ls.txt 原始檔案內容之後


個人心得

之前不知道Linux環境下可以用這種方式輸入測試資料

還傻傻的一筆一筆輸入測資

有時候不小心手誤,輸入錯誤還需要暫停程式並且重新輸入 

回頭仔細想來,當下貪圖一時的方便其實並沒有節省多少時間

 反而在未來替自己挖了一個消耗時間的大坑還不自知 

知識就是力量這句格言在今天的情境下完美的體現出來


參考資料 

1.  bash shell script 程式設計

2.  The cat Command

3. What does “./” mean in linux shell?

4. 13 Basic Cat Command Examples in Linux

5. I/O Redirection

6. 輸入/輸出重導向(I/O Redirection)

沒有留言:

張貼留言

/* 載入prettify的autoloader */ /* 載入JQuery */