0
私は、wiremockというJavaアプリケーションプロセスを停止するSBTタスクを作成しようとしています。SBT ProcessCommandを使用したパイプ出力
lazy val `stop-wiremock` = taskKey[Unit]("Stop the wiremock server")
lazy val stopWireMockTask = `stop-wiremock` in Performance := {
"kill $(ps ux | grep [w]iremock | awk '{print $2}')".!
}
残念ながら、これは出力になり:
> stop-wiremock
kill: illegal process id: $(ps
kill: illegal process id: ux
kill: illegal process id: |
kill: illegal process id: grep
kill: illegal process id: [w]iremock
kill: illegal process id: |
kill: illegal process id: awk
kill: illegal process id: '{print
kill: illegal process id: $2}')
私はプロセスビルダーがここに舞台裏で何をしているのか知らないが、これは動作しないとthe documentationはoperators
際に使用するために私に指示
lazy val `get-wiremock-pid` = taskKey[Unit]("Stop the wiremock server")
lazy val getWiremockPidTask = `get-wiremock-pid` in Performance := {
"ps ux" #| "grep [w]iremock" #| "awk '{print $2}'" !
}
今誤差は次のとおりです:
私のコマンドを構築するので、私は次のことを試してみました> get-wiremock-pid
awk: syntax error at source line 1
context is
>>> ' <<<
missing }
awk: bailing out at source line 1
これは、プロセスビルダーが引数を空白のawk
に分割しているため、awk '{print
しか受信できないが、これを修正する方法がわかりません。
ProcessBuilder演算子を使用してこれを行うのに役立つ人はいますか?また、完全なコマンドを実行する方法を提案する人はいますか?どうもありがとうございました。