运行脚本的输出并检查一致性

运行脚本的输出并检查一致性

给定一个输出的文件script,有没有办法按顺序运行所有这些命令,然后检查输出是否与脚本文件中的内容匹配?

我认为这diff可以用于最后一部分,但我不知道如何做第一部分。有什么想法吗?

在 Linux 上使用 tcsh shell(Debian,但我怀疑这很重要)。

答案1

编辑:摘自手册:

脚本将所有内容(包括换行符和退格符)放在日志文件中。这不是新手用户所期望的。

这意味着在最简单的情况下可能可以做到这一点,通过$PS1在输出中查找出现的位置并在其后运行字符串,但很快就会变得不可能:

  • 您看不出文字字符和转义字符之间的区别^C
  • 任何后台作业都可以随时插入文本,从而弄乱输出。while true; do sleep $RANDOM; echo garbage; done &
  • 如果它记录标准错误,则存在整个异步输出问题。

如果可以的话,我宁愿使用 /var/log/cmdlog,看看记录在那里的命令生成的所有文本是否出现在文件中的任何位置script

答案2

好的,它的语义之一diff是,如果文件不同,它就输出文本,如果文件相同,则不输出任何内容。

给定文件foobar,您可以执行以下操作:

# Run your script
if [ "$(diff foo bar)" = "" ]; then
    echo "They are the same"
else
    echo "They are different"
fi

(您的第一部分并不十分清楚 - 您是否有一个示例输出out.template并且script > out.log想确保out.templateout.log相同?或者其他什么?)

相关内容