Я следую руководству Дженкинса о том, как использовать общие библиотеки, но когда я пытаюсь заменить сценарий оболочки bash на Powershell, я не могу получить доступ к аргументу сценария.
Я пробовал все комбинации классных замен строк, которые только мог придумать, в сочетании с использованием переменных Powershell, но ни один из них не смог получить доступ к аргументу.
Во всех примерах этого скрипта результат записи пустого аргумента:
def call(String argument) {
powershell '''
$ErrorActionPreference = "Stop"
try
{
Write-Output "First=$argument."
Write-Output "Second=${argument}"
Write-Output "Third=$($argument)"
Write-Output "Fourth=${$(argument)}"
Write-Output "Fifth=$env:argument"
Write-Output "Sixth=${env:argument}"
Write-Output "Seventh=${$env:argument}"
Write-Output "Eights=$($env:argument)"
Write-Output "Ninths=\$argument"
Write-Output "Tenth=\${argument}"
Write-Output "Eleventh=(${argument})."
Write-Output "Twelvth=${params.argument}"
Write-Output "Thirteenth=\${params.argument}"
Write-Output "Fourteent=${argument}"
}
catch
{
# Write the received error to the error output.
Write-Output $Error[0]
#Return an error code.
Exit 1
}
'''
}
Может ли кто-нибудь сказать мне, какой синтаксис использовать, чтобы Powershell записывал значение argument?





Используйте withEnv, чтобы установить переменные среды в заданной области, которые можно использовать непосредственно из сценариев оболочки, например. г. в PowerShell, используя синтаксис $env:VariableName, и в Bash, используя синтаксис $VariableName.
def call(String argument) {
withEnv([ "myArg1=$argument" ]) {
powershell '''
$ErrorActionPreference = "Stop"
Write-Output "First=$env:myArg1"
'''
}
}
Примечание: По соображениям безопасности рекомендуется избегать интерполяции строк Groovy при передаче аргументов в сценарий оболочки (подробное объяснение).