我有一个文本文件,每行包含一个数字。共有5行。
我还有一个程序可以运行并输出5个数字,每行一个。程序的输出应与文本文件的每一行上的数字相匹配。
如何检查数字是否相等?
我正在使用bash
答案 0 :(得分:1)
假设生成数字的程序称为program
,并且带有引用号的文件称为file
。比较它们:
program | cmp - file || echo "Fail"
cmp
是一个比较两个文件的程序,其中一个文件可以是stdin,由-
表示。因此,cmp - file
将file
中的内容与program
上的stdin上提供的内容进行比较。
如果您想要详细报告两者的不同之处,请使用diff
代替cmp
:
program | diff - file
答案 1 :(得分:0)
echo -n 'The numbers are '
[[ $(< numsfile) == $(< ./numsprog ) ]] && echo 'the same' || echo different
这假设文件numsfile
或程序numsprog
的输出中没有空格或其他非数字字符(换行符除外)。
答案 2 :(得分:0)
从最复杂的情况来看:你可以比较两个节目的输出
diff -q <(seq 1 5) <(seq 2 6)
如果您喜欢管道,可以用-
(意思是标准输入)替换任何参数
seq 1 5 | diff -q - <(seq 2 6)
要解决您的问题,请先将seq
替换为您的程序,将<(...)
替换为您的文件名。