[英]How to pass a parameter which includes a single quote in it from Jenkins to PowerShell? Unterminated quoted string
在 Jenkins 管道的一個階段中,我需要將參數值傳遞給腳本。 有時這些值可能包含一個單引號,它會中斷運行並且不會進入腳本。
sh "pwsh -file script.ps1 '${params.NAME}' '${params.DESCRIPTION}' '${params.SOMETHING}'"
即在stage調用腳本時,傳入的參數可能是這樣的:
'Name' 'Somebody's description' 'Something'
如您所見,它與正在傳遞的 arguments 混淆。 它會產生未終止的引號字符串的錯誤。 正如參數建議的那樣,我只需要將 3 個參數傳遞給腳本。
有什么辦法可以解決這個問題? 我是否應該在調用腳本之前添加另一個階段,該腳本以可以傳遞給 PowerShell 腳本的方式格式化參數值? 如果是這樣,我應該如何格式化它? 有沒有其他方法可以解決它?
bash
的內置printf
有一個%q
格式字符串,它將為您插入引號。 您可以嘗試以下方法:
sh -c "$(printf "%q " pwsh -file script.ps1 "${NAME}" "${DESCRIPTION}" "${SOMETHING}")"
但我不確定參數在什么時候得到擴展。 不過,這種事情本質上是脆弱的,你應該找到更好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.