不要使用
view
就像那样。你用它来
跑
一
Shell
,并打印结果值,使您无法访问这些值。
壳
它本身是一个单子,所以你应该建立一个
操作,然后使用运行
看法
或
sh
(在不打印的情况下丢弃值)。(它们是终端函数;只有在完成所做的事情时才使用它们)。事实上
MonadIO Shell
IO
你可以进来
壳
(通过
liftIO :: MonadIO m => IO a -> m a
).
main = sh $ do -- You don't want to print the output of this Shell (a bunch of ()s)
filename <- format fp <$> find (suffix ".mp4") "/Users/me/videos"
let output = findOtherName filename -- Find the output arg for ffmpeg
procs "ffmpeg" ["-vn","-acodec","libmp3lame","-ac","2","-ab"
,"160k","-ar","48000","-i",filename,output ] -- Just add them on
这与
#!/bin/sh
for filename in /Users/me/videos/*.mp4; do
output="`findOtherName "$filename"`"
ffmpeg -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 -i "$filename" "$output"
done