使用bash脚本将程序输出与正确的程序进行比较,而不使用文本文件

时间:2011-01-08 02:25:06

标签: bash scripting

我一直在尝试通过使用bash脚本将程序的输出与已知的正确输出进行比较,而不将程序的输出传递给文件,然后在输出文件和正确的输出文件上使用diff。

我已经尝试将变量设置为输出并更正输出,我相信它已成功但我无法使字符串比较正常工作。我对变量设置可能有误,所以可能就是这样。

我一直在写什么:

TEST=`./convert testdata.txt < somesampledata.txt`
CORRECT="some correct output"
if [ "$TEST"!="$CORRECT" ];
then
  echo "failed"
fi

3 个答案:

答案 0 :(得分:1)

if [“$ TEST!”!=“$ CORRECT”];

看起来!中有额外的$TEST!

这对我有用......

$ echo "foobar" > /tmp/test; TEST=`tail -n1 < /tmp/test`; CORRECT="foobar"; if [ "$TEST" != "$CORRECT" ]; then echo "failed"; fi
$

这对我失败了......

$ echo "barfoo" > /tmp/test; TEST=`tail -n1 < /tmp/test`; CORRECT="foobar"; if [ "$TEST" != "$CORRECT" ]; then echo "failed"; fi
failed

答案 1 :(得分:0)

问题是我使用了错误的字符串来输出正确的输出,所以它总是失败。

校正:

TEST=`./convert testdata.txt < BothKnownZero.txt`
CORRECT=$'Enter original quantity, original units, new units\n0.0000 miles equals 0.0000 feet'
echo $TEST
echo $CORRECT
if [ "$TEST" != "$CORRECT" ]
then
    echo "failed "
fi

答案 2 :(得分:0)

如果您有zsh可用,则可以使用=(cmd)构造,它将cmd的输出保存到临时文件中,该文件在命令返回时被删除:

if ! diff -q known_good =(cmd); then
  # do something if they differ
fi