我该如何更改此脚本

时间:2017-02-09 22:45:34

标签: c bash

所以我有这个脚本来检查一个数字是否是我期望的数字。但我想直接用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是指打印数字的程序。我想检查它是否与预期存储的相同但不使用文件

2 个答案:

答案 0 :(得分:1)

这对我来说很好(通过用简单的echo脚本替换a.out):

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

man bash:

  

流程替代          进程替换允许使用文件名引用进程的输入或输出。它采用&lt;(list)或&gt;(list)的形式。进程列表以异步方式运行,其输入或输出显示为文件名。

答案 1 :(得分:0)

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

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