Linux 当输入被重定向到一个文件时,如何比较两个二进制文件的输出?
我有两个编译好的C文件,我试图在一个shell脚本中对它们进行比较,看看它们是否产生相同的输出,当这两个文件的输入被重定向到另一个名为test.txt的文件时。我必须确保我的代码执行以下操作: 然而,我不认为我的代码是正确的。我想我遗漏了一些关于输入重定向部分的内容 这就是我到目前为止所做的:Linux 当输入被重定向到一个文件时,如何比较两个二进制文件的输出?,linux,bash,shell,Linux,Bash,Shell,我有两个编译好的C文件,我试图在一个shell脚本中对它们进行比较,看看它们是否产生相同的输出,当这两个文件的输入被重定向到另一个名为test.txt的文件时。我必须确保我的代码执行以下操作: 然而,我不认为我的代码是正确的。我想我遗漏了一些关于输入重定向部分的内容 这就是我到目前为止所做的: #!/usr/bin/env bash if [ -e test-code ] then ./test-code > test1.txt ./gold-code > te
#!/usr/bin/env bash
if [ -e test-code ]
then
./test-code > test1.txt
./gold-code > test2.txt
diff -w test1.txt test2.txt < test.txt
if [ $? -eq 0 ]
then
exit 0
fi
else
exit 1
fi
#/usr/bin/env bash
if[-e测试代码]
然后
/测试代码>test1.txt
./gold code>test2.txt
diff-w test1.txt test2.txt
如果出现多个错误,请尝试以下操作:
#!/usr/bin/env bash
set -e # every command that fails does exit $?
[ -e test-code ]
./test-code < test.txt > test1.txt
./gold-code < test.txt > test2.txt
diff -w test1.txt test2.txt
#/usr/bin/env bash
set-e#每个失败的命令都会退出$?
[-e测试代码]
/测试代码test1.txt
./gold代码test2.txt
diff-w test1.txt test2.txt
听起来像是test code
和gold code
应该有test.txt
作为输入。不是diff
@that otherguy,但是我不需要同时比较两个文件的输出吗?因此,在将输出与diff进行比较之后,我应该在diff?Addelse之后的if语句中执行/test code
;出口1;fi
到内部如果
。您还可以在diff-w…时执行,而不是选中$?
。您的描述不清楚。但是,我怀疑将两个命令行更改为/test codetest1.txt
和/gold codetest2.txt
可能满足需要(即使用相同的输入运行两个程序,并将其输出捕获到单独的文件中进行比较)。虽然您假定存在gold code
,但也可能需要付费检查它是否存在。您可能需要diff-b
而不是diff-w
。当使用-b
时,与-w
的“忽略所有空白”(macOS手册页)相比,“忽略空白量的变化”。这取决于您的指令“忽略空白差异时”是否意味着“abc
”和“abc
”与“abc
”和“abc
”相同或不同”。