4
我想遷移現有的makefile動搖,到目前爲止,我已經試過以下(只創建一個目錄內容的文件)使用搖
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
當我如何執行sh命令運行它,我得到以下錯誤信息:
> 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
命令並重定向其輸出?
'殼'確實工作。爲什麼需要呢?我以爲'cmd'已經在運行一個shell命令,不是嗎? – mb14
不,'cmd'直接運行命令,通過'exec'(如果這是C)。避免使用'Shell'通常會提供跨平臺的更多可預測的行爲,避免啓動shell,使得轉義更簡單等。 –