說我有一個輸入文件和一個輸出文件(test.in和test.out)和一個程序「./myprogram」,標準輸入重定向來自test.in並使用結果這是從標準輸出捕獲與test.out進行比較比較輸入和輸出 - bash
究竟如何我可以比較
即時通訊思想,
if [ $(myprogram < test.in) == $(cat test.out) ]
有什麼建議?
說我有一個輸入文件和一個輸出文件(test.in和test.out)和一個程序「./myprogram」,標準輸入重定向來自test.in並使用結果這是從標準輸出捕獲與test.out進行比較比較輸入和輸出 - bash
究竟如何我可以比較
即時通訊思想,
if [ $(myprogram < test.in) == $(cat test.out) ]
有什麼建議?
使用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
如果你想知道有什麼區別。
我會使用差異。類似這樣的:
if cat test.in | myprogram | diff - test.out
也許還會使用'-q'(quiet)選項來進行比較。 –
是的,雖然「安靜」仍然打印出一些信息。 –
'-'被假定爲文件? – Thatdude1
我是否必須製作一個tmp文件來將.out文件與.in輸入的程序的實際結果相匹配? – Thatdude1
@Beginnernato大多數shell程序將'-'視爲stdin的簡寫形式。它也可以通過僞文件'/ dev/stdin'來訪問。 –