Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 当输入被重定向到一个文件时,如何比较两个二进制文件的输出?_Linux_Bash_Shell - Fatal编程技术网

Linux 当输入被重定向到一个文件时,如何比较两个二进制文件的输出?

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

我有两个编译好的C文件,我试图在一个shell脚本中对它们进行比较,看看它们是否产生相同的输出,当这两个文件的输入被重定向到另一个名为test.txt的文件时。我必须确保我的代码执行以下操作:

然而,我不认为我的代码是正确的。我想我遗漏了一些关于输入重定向部分的内容

这就是我到目前为止所做的:

#!/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?Add
else之后的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
”相同或不同”。