2012-10-01 90 views
1

說我有一個輸入文件和一個輸出文件(test.in和test.out)和一個程序「./myprogram」,標準輸入重定向來自test.in並使用結果這是從標準輸出捕獲與test.out進行比較比較輸入和輸出 - bash

究竟如何我可以比較

即時通訊思想,

if [ $(myprogram < test.in) == $(cat test.out) ] 

有什麼建議?

回答

4

使用cmp&dagger;並指定-作爲要比較的文件之一,該文件告訴其使用stdin。

if myprogram < test.in | cmp -s - test.out; then 

如果你想兩個命令的輸出比較,而無需創建臨時文件,使用<(cmd)功能。 (在man bash搜索 「過程替代」。)

if cmp -s <(myprogram < test1.in) <(myprogram < test2.in); then 

&匕首;diff如果你想知道有什麼區別。

+0

'-'被假定爲文件? – Thatdude1

+0

我是否必須製作一個tmp文件來將.out文件與.in輸入的程序的實際結果相匹配? – Thatdude1

+0

@Beginnernato大多數shell程序將'-'視爲stdin的簡寫形式。它也可以通過僞文件'/ dev/stdin'來訪問。 –

0

我會使用差異。類似這樣的:

if cat test.in | myprogram | diff - test.out

+0

也許還會使用'-q'(quiet)選項來進行比較。 –

+1

是的,雖然「安靜」仍然打印出一些信息。 –