2012-03-08 73 views
0

測試命令行界面我想讀取文件並將其內容發送到CLI。這可以很容易地與在讀取文件和解釋文件時顯示輸入和輸出

cat file | ./my_program 

./my_program < file 

唯一的問題是它的輸出來完成。這是

> command not found 
> command not found 
> 

,而不是

> a 
command not found 
> b 
command not found 
> quit 

時讀取該文件包含三行

a 
b 
quit 

是否可以打印輸入過,並輸出移動到下一個線?

+0

請嘗試在此處執行此操作嗎?你是否想用名字my_program來執行你的腳本? – Teja 2012-03-08 14:19:53

+0

@Venk:是的,這是計劃。我的系統上的 – sschaef 2012-03-08 15:02:20

回答

1

在某些平臺上,你可以發球輸入到/ dev/tty的:

 
< file tee /dev/tty | ./my_program 

注意,這會給你的輸出,其中輸入是不區分有一個提示:

 
a 
command not found 
b 
command not found 
quit 

但是你可以在前面加上所有$ PS2很輕鬆地輸入線:

 
< file sed "s/^/$PS2/" | tee /dev/tty | sed "s/^$PS2//" | ./my_program 

(PS2默認到'>',如果PS2的內容包含任何正斜槓,則需要修改sed命令以使用未在PS2中出現的分隔符。)

+0

您的命令首先打印出文件的行,然後輸出程序的輸出。它們不會像您的示例中所示那樣合併。 – sschaef 2012-03-08 15:01:21

+0

我認爲問題在於您的程序正在寫入stderr,所以交錯受到緩衝的影響。要插入它們,只需通過2>&1將stderr重定向到stdout即可。 – 2012-03-08 15:21:01

+0

這沒有任何改變。輸出仍然是一樣的。 – sschaef 2012-03-08 16:14:28