如何在Racket中返回命令行结果?

时间:2016-06-25 08:30:02

标签: command-line scheme racket

我可以使用带有(system "some command")的Racket发出bash命令,但该函数返回#t而不是命令行的结果输出,它只打印。如何通过该函数获取返回命令的结果?

1 个答案:

答案 0 :(得分:7)

system程序将stdout设置为参数current-output-port的值。这意味着我们可以将写入current-output-port的所有内容收集到字符串中并返回该字符串。构造with-output-to-stringcurrent-output-port设置为不打印任何内容的端口,但最终会返回以字符串形式写入端口的内容。

> (with-output-to-string (lambda () (system "date")))
"Sat Jun 25 12:20:12 CEST 2016\n"