Запуск файла сценария PowerShell с путем, содержащим пробелы, из Jenkins Pipeline без использования backtick - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу запустить следующий файл сценария PowerShell из Jenkins Pipeline:

".\Folder With Spaces\script.ps1"

Я смог сделать это с помощью следующего определения шага:

powershell(script: '.\\Folder` With` Spaces\\script.ps1')

Итак, у меня естьпомнить:

  • экранировать обратную косую черту с двойной обратной косой чертой (синтаксис Groovy)
  • экранировать обратную косую черту (синтаксис PowerShell)

Я быпредпочитаю избегать хотя бы части этого.Можно ли, например, избежать экранирования от обратной черты?(По какой-то причине ввод этого слова между "" не работает.)

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Чтобы избежать экранирования от обратной косой черты, вы можете использовать косые строки или долларовые косые строки следующим образом.Однако вы не можете использовать обратную косую черту как самый последний символ в косых строках, так как он будет экранировать /.Конечно, косые черты также должны быть экранированы при использовании косых строк .

String slashy = /String with \ /
echo slashy
assert slashy == 'String with \\ '

// won't work
// String slashy = /String with \/

String dollarSlashy = $/String with / and \/$
echo dollarSlashy
assert dollarSlashy == 'String with / and \\'

И, конечно, вы потеряете возможность включать переводы строки \n и другие специальные символы встрока с использованием \.Однако, поскольку строки с косой чертой и со строкой доллара имеют многострочную поддержку, по крайней мере, могут быть добавлены новые строки, например:

String slashyWithNewline = /String with \/ and \ 
with newline/
echo slashyWithNewline
assert slashyWithNewline == 'String with / and \\ \nwith newline'

String dollarSlashyWithNewline = $/String with / and \ 
with newline/$
echo dollarSlashyWithNewline
assert dollarSlashyWithNewline == 'String with / and \\ \nwith newline'

Если вы объедините это со своим собственным ответом, вам не понадобятся оба выхода.

0 голосов
/ 03 декабря 2018

Я обнаружил, что можно использовать амперсанд или вызывать оператор, например, так:

powershell(script: "& '.\\Folder With Spaces\\script.ps1'")

Это избавляет от выхода из-под костей и должно немного облегчить жизнь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...