首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Shake执行sh命令

如何使用Shake执行sh命令
EN

Stack Overflow用户
提问于 2014-07-22 15:08:35
回答 1查看 519关注 0票数 5

我正在尝试将现有的makefile迁移到Shake,到目前为止,我已经尝试了以下方法(只需创建一个包含目录内容的文件)

代码语言:javascript
复制
module Main where
import Development.Shake

main :: IO ()
main = shakeArgs shakeOptions{shakeFiles="_build"} $ do
    let ls = "_build/ls.txt"
    want [ls]
    ls *> \out ->  do
        cmd "ls >  " out

当我运行它时,我会收到以下错误消息:

代码语言:javascript
复制
> runghc test.hs _build/ls.txt
# ls (for _build/ls.txt)
ls: >: No such file or directory
ls: _build/ls.txt: No such file or directory
Error when running Shake build system:
* _build/ls.txt
Development.Shake.cmd, system command failed
Command: ls > _build/ls.txt
Exit code: 1
Stderr:
ls: >: No such file or directory
ls: _build/ls.txt: No such file or directory

我做错什么了?如何执行sh命令并重定向其输出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-22 15:28:43

要从您可能需要的转换开始:

代码语言:javascript
复制
cmd Shell "ls >" out

参数Shell告诉Shake使用系统外壳,这意味着重定向工作。稍后,您可能希望切换到:

代码语言:javascript
复制
Stdout result <- cmd "ls"
writeFile' out result

现在不是调用shell,而是用Shake捕获输出。稍后,您可能希望切换到:

代码语言:javascript
复制
getDirectoryFiles "." ["*"]

这是获取文件列表的Shake跟踪方式。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24891061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档