私は scotty を使用していますが、POST リクエストからシェル スクリプトを実行しようとすると、同じタイプのエラーが発生します。
main = scotty 3000 $ do
post "MyPage/ScriptTime/run" $ do
aparameter <- param "aparameter"
bparameter <- param "bparameter"
cparameter <- param "cparameter"
dparameter <- param "dparameter"
eparameter <- param "eparameter"
rawSystem "./shellscript.sh" [ "-a"
, aparameter
, "-b"
, bparameter
, "-c"
, cparameter
, dparameter
, eparameter
]
Is it possible to invoke bash or shell scripts from a haskell program?の回答を使用する Haskellでシステムコマンドを実行しても、エラーメッセージを変更できませんでした。
エラーは次のとおりです。
Main.hs:68:5: error:
• Couldn't match type ‘IO’
with ‘Web.Scotty.Internal.Types.ActionT
Data.Text.Internal.Lazy.Text IO’
Expected type: Web.Scotty.Internal.Types.ActionT
Data.Text.Internal.Lazy.Text IO ()
Actual type: IO GHC.IO.Exception.ExitCode
• In a stmt of a 'do' block:
rawSystem "./shellscript.sh" ["-a", aparameter, "-b", bparameter, ....]
In the second argument of ‘($)’, namely
‘do aparameter <- param "aparameter"
bparameter <- param "bparameter"
cparameter <- param "cparameter"
dparameter <- param "dparameter"
....’
シェル スクリプトの呼び出しに使用する関数とライブラリを、次のようないくつかの方法で変更しました。
() <- createProcess (proc "./shellscript.sh" ["-a", aparameter, "-b", bparameter, ...])
runProcess (shell "./shellscript.sh -a aparameter -b bparameter ...") >>= print
System.Process、System.Process.Typed、および System.Cmd ライブラリを使用してみました。
誰かが私のタイプの不一致を理解するのを手伝ってくれますか?