我正在創建一個使用與服務器互動的外部程式的腳本。我想在嘗試使用它之前先測驗該程式是否已安裝。
我查找了判斷是否安裝了程式的首選方法并找到了這篇文章: 如何檢查 Bash 腳本中是否存在程式?
TLDR:它建議使用“command -v <prog-name>”而不是“which <prog-name>”,因為它與 POSIX 兼容。如果找到程式,該命令應回傳 0,否則回傳 >0。
所以我readProcessWithExitCode從 System.Process 使用如下
readProcessWithExitCode "command" ["-v", "<some-program>"] ""
在 GHCI 中測驗時出現以下錯誤
例外:命令:readCreateProcessWithExitCode:posix_spawnp:不存在(沒有這樣的檔案或目錄)
我試圖在“命令”上使用“哪個”。它告訴我它不存在,盡管我可以使用它,并且它按照我終端的手冊頁中的描述作業。
這里發生了什么,我如何查看是否使用 Haskell 安裝了某些東西?
一些系統資訊:
- GHC:9.0.2
- 決議器:lts-19.11
- “我用 Arch 順便說一句”
uj5u.com熱心網友回復:
我建議您簡單地運行您想要運行的程式,并在它不可用時捕獲您得到的例外。像這樣:
catch
(callProcess "lol-this-does-not-exist" []) -- or whatever
(\e -> if isDoesNotExistError e then putStrLn "yikes" else throw e)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/493303.html
