我有一個用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
我有一個用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
通常使用expect測試這些類型的應用程序。
您可以使用「這裏文件」。語法如下:
./start kernel <<EOF
1
2
q
EOF
「EOF」可能是你想要的任何獨特字,只要它是不是你真正需要的輸入。
這是一個聰明的解決方案感謝勞倫斯:) – 2010-12-22 20:33:43
您可以保存您輸入的文本文件 - input.txt中,執行程序是這樣的:./program < input.txt
我稱這種方法爲「窮人的自動化」,而且我使用它的方式比我想要承認的要多。零錯誤處理,但通常可以完成工作。 – bta 2010-12-03 02:38:12
你可以將shell腳本想象成它們......只是每一行都在一個(儘管是新的)shell中執行。
一個簡單的方法做這樣的輸入,假設[your program]
接受stdin是:
#!/bin/bash
echo "1" | [your program] > [logfile1]
echo "2" | [your program] > [logfile2]
echo "q" | [your program] > [logfileq]
我這樣做:
#! /bin/bash printf "1\n2\nq\n" | ./start kernel
前面提到的解決方案在某些情況下似乎可行,但您的解決方案似乎是最好的。感謝拜倫的幫助:) – 2010-12-22 20:33:15