2

私は 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 ライブラリを使用してみました。

誰かが私のタイプの不一致を理解するのを手伝ってくれますか?

4

1 に答える 1