小编Vil*_*son的帖子

如何在 Haskell 中判断 Linux 上是否安装了程序

我正在创建一个使用与服务器交互的外部程序的脚本。我想在尝试使用该程序之前先测试该程序是否已安装。

我查找了判断程序是否已安装的首选方法,并找到了这篇文章: How can I check if a program contains from a Bash script?

TLDR:它建议使用“command -v <prog-name>”而不是“which <prog-name>”,因为它是 POSIX 兼容的。如果找到程序,该命令应返回 0,否则返回 >0。

所以我从 System.Process 中使用readProcessWithExitCode如下

readProcessWithExitCode "command" ["-v", "<some-program>"] ""
Run Code Online (Sandbox Code Playgroud)

在 GHCI 中测试时出现以下错误

异常:命令:readCreateProcessWithExitCode:posix_spawnp:不存在(没有这样的文件或目录)

我尝试在“命令”上使用“which”。它告诉我它不存在,尽管我可以使用它,并且它的工作原理如我的终端中的手册页中所述。

这是怎么回事?我如何查看是否使用 Haskell 安装了某些内容?

一些系统信息:

  • GHC:9.0.2
  • 解析器:lts-19.11
  • “顺便说一句,我使用 Arch”

bash haskell posix

1
推荐指数
1
解决办法
329
查看次数

标签 统计

bash ×1

haskell ×1

posix ×1