gpt4 book ai didi

unix - 将 shell 的结果作为 Int 存储在变量中

转载 作者:行者123 更新时间:2023-12-04 16:55:06 24 4
gpt4 key购买 nike

所以我处理文件,我需要知道文件 X 中的最大行。使用 Unix awk 会产生我正在寻找的 Int。但是在 Haskell 中,如何返回该值并将其保存到变量中?
我试着用 IO [Int] -> [Int] 定义一些东西

maxline = do{system "awk ' { if ( length > x ) { x = length } }END{ print x }' filename";}

不起作用,原因:
Couldn't match expected type 'Int',against inferred type 'IO GHC.IO.Exception.ExitCode'

最佳答案

这是因为 system action 返回您运行的命令的退出状态,该状态无法转换为 Int .您应该使用 readProcess 获取命令输出。

> readProcess "date" [] []
"Thu Feb 7 10:03:39 PST 2008\n"

请注意 readProcess不将命令传递给系统 shell :它直接运行它。第二个参数是命令的参数应该去的地方。所以你的例子应该是
readProcess "awk" [" { if ( length > x ) { x = length } }END{ print x }", "/home/basic/Desktop/li11112mp/textv"] ""

关于unix - 将 shell 的结果作为 Int 存储在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com