экранирование специального символа в groovy - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу запустить свою команду в фоновом режиме. Я пытаюсь выполнить это в конвейере jenkins. Это моя команда

sh "./node_modules/.bin/selenium-standalone start \ &"

Но когда я запускаю эту команду и получаю одинарную кавычку, из-за чего команда не выполняется. РЕЗУЛЬТАТ: ./node_modules/.bin/selenium-standalone start '&'

Может кто-нибудь подсказать, как мне следует избегать & in groovy, поэтому я просто получаю & без одинарных кавычек.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2020

Это будет не так просто, во-первых, потому что & - это команда для управления заданиями в интерактивной оболочке, а также из-за того, как деревья процессов работают в Linux.

. Короче говоря, если вам нужно запустить команду в фоновом режиме, вы должны использовать daemonize :

sh label: "starting selenium in the background",
    script: "/usr/local/bin/daemonize ./node_modules/.bin/selenium-standalone start"
1 голос
/ 19 февраля 2020

& не является специальным символом Groovy. Это для оболочки. Так что если вы не хотите запустить эту команду в фоновом режиме, но хотите передать туда & в качестве аргумента для вашего скрипта, вы должны использовать \\& внутри " -строк. И если вы хотите запустить скрипт в фоновом режиме, то просто используйте &.

...