簡體   English   中英

如何將包含單引號的參數從 Jenkins 傳遞到 PowerShell? 未終止的引號字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM