我可以使用带有(system "some command")
的Racket发出bash命令,但该函数返回#t而不是命令行的结果输出,它只打印。如何通过该函数获取返回命令的结果?
答案 0 :(得分:7)
system
程序将stdout
设置为参数current-output-port
的值。这意味着我们可以将写入current-output-port
的所有内容收集到字符串中并返回该字符串。构造with-output-to-string
将current-output-port
设置为不打印任何内容的端口,但最终会返回以字符串形式写入端口的内容。
> (with-output-to-string (lambda () (system "date")))
"Sat Jun 25 12:20:12 CEST 2016\n"