Экранирующий символ оболочки в конвейере groovy Дженкинс - PullRequest
0 голосов
/ 27 января 2020

У меня есть проблема с экранированием кавычек в моем конвейере Дженкинса. например:

Я хочу добавить текст в файл через конвейер, используя следующую команду:

openshift.rsh("${podname}", """sh -c 'echo "define( 'WP_HOME', 'http://rabah-test.com' );" >> wp-config.php'""")

и ожидая этого в файле wp-config. php:

define( 'WP_HOME', 'http://rabah-test.com' );

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

define( WP_HOME, http://rabah-test.com );  

Ответы [ 2 ]

1 голос
/ 27 января 2020

Я считаю, что это не проблема с Дженкинсом. Попробуйте сначала запустить вашу команду в терминале. У вас есть простые кавычки для вашей команды sh и простые кавычки внутри определения.

Я бы попробовал что-то вроде

sh -c 'echo "define( \'WP_HOME\', \'http://rabah-test.com\' );" >> wp-config.php'

Примечание, вместо добавления определения в wp-config . php файл, я бы соблазнился сделать версию WP_HOME по умолчанию и заменить ее на sed

0 голосов
/ 28 января 2020

Я нашел, как с этим бороться. Вместо использования простых кавычек я решил использовать двойные кавычки и убежать с двумя обратными слешами.

Примерно так:

sh -c 'echo "define( \\" WP_HOME \\" , \\" http://rabah-test.com \\" );" >> wp-config.php'

И теперь он работает отлично.

...