Вы можете просто оставить в начале и конце одинарные кавычки, не нужно использовать грубую силу и удалить их все. Это может привести к другим ошибкам (хотя не в вашем случае здесь), и в вашем случае этого недостаточно, чтобы получить желаемый результат .¹
Реальная проблема заключается в том, что вы пытаетесьизбегайте одинарных кавычек в скаляре с одинарными кавычками.Единственный символ, который можно и нужно экранировать в скаляре с одинарными кавычками, - это одиночная кавычка.Так что это не может быть сделано с помощью обратной косой черты, как вы сделали, потому что тогда обратная косая черта также должна быть экранирована в скалярах с одинарными кавычками.
Чтобы избежать одиночной кавычки в скаляре с одинарными кавычками, необходимо удвоить / повторить его .²
В спецификации YAML в формулировкенемного отличается, с тем же эффектом:
Стиль в одинарных кавычках определяется окружающими символами «».Поэтому в скаляре с одинарными кавычками такие символы необходимо повторять.Это единственная форма экранирования, выполняемая в скалярах с одинарными кавычками.В частности, символы «\» и «» могут использоваться свободно.
Таким образом, чтобы изменить строку 5, просто измените обе обратные косые черты на одинарные кавычки:
script:
- 'pwd'
- 'whoami'
- 'ls temp__*'
- 'ssh deployer@gitadam.ga ''rm /var/www/html/hosts/production/current/temp__*'''
- 'if ls temp__* 1> /dev/null 2>&1; then for file in temp__*; do scp $file deployer@gitadam.ga:/var/www/html/hosts/production/current/; done; fi'
Внутри двойные цитируемые скаляры в YAML, которые можно использовать с обратными косыми чертами, чтобы получить двойные кавычки, а также все виды специальных символов или для упрощения функций YAML.В пятой строке потребуется удалить обратные слеши, если вы будете использовать двойные кавычки:
- "ssh deployer@gitadam.ga 'rm /var/www/html/hosts/production/current/temp__*'"
Есть несколько причин для сохранения кавычек. Если любой из ваших скаляров начался бы со специального (для YAML)символ, вам нужно заключить в кавычки. Недостаточно, чтобы скаляр начинался с буквы (A-Za-z
): если бы у скаляра были специальные последовательности, такие как последовательность начала комментария (пробел + октоторпе) или индикатор значения (двоеточие)+ пробел), затем вы должны использовать кавычки.
Использование одинарных кавычек безопаснее, чем их не использоватьи единственное, что вам нужно знать при их использовании, это как избежать их.Иногда они могут быть излишними, но это самый простой способ (в отношении количества исключений, которые необходимо учитывать) определить скалярную строку в YAM L.
¹ Вам также необходимо удалить обратную косую черту, как в строке 5, если вы удалите начальные и конечные одинарные кавычки.
² Здесь «оно» относится к одиночномуцитата, конечно, не весь скаляр.