2017-02-09 44 views
0

所以我有这个脚本来检查一个数字是否是我期望的数字。但我想直接用C程序输出来测试它,而不是将结果存储在文件中。我如何更改这个脚本

#!/bin/bash 
j=0; 
for i in {1..100}; 
do ./a.out > output; 
cmp expected output || let "j+=1"; 
done 
echo $j; 

./a.out是指打印一个数字的程序。我想检查它是否与预期存储的一样,但不使用文件

+0

这个脚本似乎没有做你所描述的... –

+0

C与这个有什么关系?你真的认为它重要的是什么语言'a.out'被写入? bash代码是相同的。 – Barmar

回答

0

您可以使用$(command)将命令的输出替换为命令行。

expected=$(< expected) 
j=0 
for i in {1..100}; do 
    test "$(./a.out)" = "$expected" || let j+=1 
done 
echo $j 
1

这个工作对我罚款(用一个简单的回声脚本替换的a.out):

#!/bin/bash 
j=0; 
for i in {1..100}; 
cmp expected <(./a.out) || let "j+=1"; 
done 
echo $j; 

人的bash:

进程替换
进程替换允许一个进程的输入或输出使用文件名引用。它采取<(列表)或>(列表)的形式。进程列表异步运行,其输入或输出显示为文件名。