如何获取shell命令的输出?

By yanying at 2018-03-01 • 0人收藏 • 276人看过

大家好!有一个问题想要请教,我想在scheme里面执行一个shell命令,并且将其结果赋值给某一个变量,这应该如何实现呢?

我知道(system "ls")可以执行一个命令,但是命令的执行结果貌似只是打印到了屏幕上的,类似display的输出。

所以想请教一下大家,scheme是否有办法可以实现如其他很多语言一样的赋值给一个变量是一个shell命令的输出,例如ruby语言的:a = `ls`。

3 个回复 | 最后更新于 2018-03-10
2018-03-01   #1

最简单办法就是 'ls>> temp' , 把结果存入临时文件,然后读取并删除文件,不想这样子的话查查 open-process-ports 的用法,它可以和子进程交互

2018-03-10   #2

你需要设置current-output-port

2018-03-10   #3


(get-string-some
    (car 
        (process shell命令)))



ps:cadr 可以传值进去

登录后方可回帖

登 录
信息栏

Scheme中文社区

推荐实现 ChezScheme / r6rs / r7rs large
theschemer.org
Q群: 724577239

精华导览

社区项目

包管理器:Raven
HTTP服务器:Igropyr (希腊火)
官方插件:vscode-chez

社区目标:

完善足以使Scheme工程化和商业化的库,特别是开发极致速度的Web服务器和ANN模块。

一直以来Scheme缺少一个活跃的中文社区,同时中文资料的稀少,导致大多数因为黑客与画家和SICP而接触Scheme的朋友,在学完SICP后无事可做,不能将Scheme转换为实际的生产力。最后渐渐的放弃。
同时Chicken等实现,却因效率问题无法与其他语言竞争。本社区只有一个目的,传播Scheme的文明之火,在最快的编译器实现上,集众人之力发展出足够与其他语言竞争的社区和库。


友情链接:

Clojure 中文论坛
函数式·China


Loading...