快速运行Shell进程

每当我想进行一些快速脚本编写(例如创建大量随机测试用例以测试某些python程序)时, perl通常是我选择的语言。 当然,几天后很难理解,但是对于快速又脏的东西,它的工作非常出色。

主要优点之一是,从perl运行shell命令非常简单:您只需在反斜杠中写一些东西:

  `echo“ foo”` 

例如,这使我很容易在计算出要使用的测试输入后调用适当的python脚本,然后在过程完成后验证输出。

为了将脚本编写过程切换到Swift,我想知道是否有可能这样做。 事实证明,在Foundation中有一个名为Process的类可以做到这一点。 但是,像大多数基础课程一样,它非常灵活,这也意味着有很多样板要进行。 这是我尝试将其转换为简单的函数调用。

首先,我在Google上搜索了一些使用Process类的代码片段,这样我就可以获得一种初步的方法。 事实证明,我还需要使用Pipe类来捕获输出。 真正困扰我的是,我正在尝试测试的程序需要从stdin读取其输入。 我想给它提供一个普通的字符串(而不是编写它来读取一个文件,这似乎太麻烦了),但是我找不到用Pipe做到这一点的方法-官方文档使我在其他方面进展顺利但这使我失败了。

然后,解决方案:将输入内容写入临时文件,使用该文件作为输入来运行该过程,然后删除该文件。 笨拙有点太笨拙了,但是我知道了。

考虑到我以为刚开始时这甚至是不可能的,因此产生的功能出奇地好。 我只是用它们来创建一些测试功能并成功地对一些作业进行评分。 最终代码在下面的要点中: