2017-12-29 73 views
1

私は、単純な置換をやっている、これはコマンドラインで正常に動作します:Jenkinsfileパイプラインでこのsedコマンドをエスケープする方法は?

sed "s/pub Url =.*/pub Url = 'https:\/\/example.com:3207';/g" myfile.ts 

私はJenkinsfile以内にそれを実行しようとしている、など40の後、私は右の引用脱出を取得することはできません構築します。しかし、次のエラーが発生することを

sh 'sed \\"s/pub Url =.*/pub Url = \\'https:\\\/\\\/example.com:3207\\';/g\\" myfile.ts'

:私が試したよう

WorkflowScript: 4: unexpected char: '\' @ line 4, column 49. ub Url =.*/pub Url = \\'https:\\\/\\\/ex

が、私は感じて、それは次のようになりますかなり確信して

数多くの変種がありますが、何も作用していません。ここで

私は取得しています最も一般的なエラーの中で:問題

sed: -e expression #1, char 1: unknown command: `"'

をエスケープを指している私は本当にただおそらく私が間違ってやっている正確に何を参照し、どこまで知ることができるパイプラインの専門家を必要としますそれを引用する。

ここに記載されているように:https://gist.github.com/Faheetah/e11bd0315c34ed32e681616e41279ef4これはパイプラインファイルでこの種のものと戦うことは珍しくありません。試行錯誤のようです。

+0

シェルスクリプトで最初に動作する 'sed'を入れて、Jenkinsfileから実行できますか?あなたの2番目のサンプルは読めない領域に接しているので、エスケープするすべてのオプションからオプトアウトすればあなた自身が好意的になるかもしれません... ':-)' – halfer

+0

Jenkinsfileからやらなければならない場合は、あなたが提供したサンプル?あなたは「このようなもの」や「何十種類もの変種」を試してきたと言い、ここのサンプルがここでエラーを生成するかどうかは明らかではないので、質問は多少曖昧です。 – halfer

+0

質問を編集しました。私はsedコマンドを簡素化し、ゆっくりと構築することで解決策に近いと思う。 – emmdee

答えて

0

多くの試行錯誤のあと、これは機能しています。

私はトリプルシングルクォートをコマンドの周りに使用しなければならなかったようです。補間する必要はありません!この

sh '''sed \"s/pub Url =.*/pub Url = \\'https:\\/\\/example.com:3207\\';/g\" afile.txt'''

希望はこれを戦って、将来的に誰かに便利です!

+0

また、HTTPS計画のバックスラッシュを2つ(3つから)に減らしました。 –