我一直在尝试通过使用bash脚本将程序的输出与已知的正确输出进行比较,而不将程序的输出传递给文件,然后在输出文件和正确的输出文件上使用diff。
我已经尝试将变量设置为输出并更正输出,我相信它已成功但我无法使字符串比较正常工作。我对变量设置可能有误,所以可能就是这样。
我一直在写什么:
TEST=`./convert testdata.txt < somesampledata.txt`
CORRECT="some correct output"
if [ "$TEST"!="$CORRECT" ];
then
echo "failed"
fi
答案 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