2010-12-03 81 views
2

我有一個用C語言編寫的程序,其操作類似於下面的輸出。用於測試命令行程序的shell腳本

WELCOME TO PROGRAM. 

Hit 1 to do task 1. 

Hit 2 to do task 2. 

Hit q to quit. 

我所需要的是一個bash外殼腳本,啓動該程序,然後進入1,2和q爲程序,所以我可以在一個命令測試所有的功能。

我會假設它看起來類似於以下

#!/bin/bash 

./start kernel 
1 
2 
q 

回答

2

通常使用expect測試這些類型的應用程序。

+0

前面提到的解決方案在某些情況下似乎可行,但您的解決方案似乎是最好的。感謝拜倫的幫助:) – 2010-12-22 20:33:15

4

您可以使用「這裏文件」。語法如下:

./start kernel <<EOF 
1 
2 
q 
EOF 

「EOF」可能是你想要的任何獨特字,只要它是不是你真正需要的輸入。

+0

這是一個聰明的解決方案感謝勞倫斯:) – 2010-12-22 20:33:43

1

您可以保存您輸入的文本文件 - input.txt中,執行程序是這樣的:./program < input.txt

+0

我稱這種方法爲「窮人的自動化」,而且我使用它的方式比我想要承認的要多。零錯誤處理,但通常可以完成工作。 – bta 2010-12-03 02:38:12

0

你可以將shell腳本想象成它們......只是每一行都在一個(儘管是新的)shell中執行。

一個簡單的方法做這樣的輸入,假設[your program]接受stdin是:

#!/bin/bash 
echo "1" | [your program] > [logfile1] 
echo "2" | [your program] > [logfile2] 
echo "q" | [your program] > [logfileq] 
+0

如果我誤解了,請原諒我;在我原來的閱讀中,我以爲你想一次一個地測試這些功能(這個代碼做了什麼),但是現在我已經閱讀了所提供的其他答案似乎還不清楚。 – William 2010-12-03 00:59:25

+0

@whoever_voted_down ...既然我是新來的,請給我一些關於你爲什麼這麼做的提示? – William 2010-12-03 01:04:01

1

我這樣做:

 
#! /bin/bash 

printf "1\n2\nq\n" | ./start kernel