У меня небольшая проблема с командой sed. Итак, у меня есть Dockerfile, который содержит следующее:
LABEL maintainer="abc" \
authors="abc" \
version="1.0.0" \
description="API desc..."
Я пытаюсь автоматизировать процесс выпуска, поэтому у меня есть сценарий, который увеличивает версию в Dockerfile перед его сборкой. Вот команда sed
, которую я использую:
sed -r 's/(version=)([0-9])\.([0-9])\.([0-9])/echo " \1\\\"\2.\3.$((\4+1))\\\" "/ge' Dockerfile
Результат таков:
LABEL maintainer="abc" \
authors="abc" \
sh: 1: Syntax error: Unterminated quoted string
Но, насколько я вижу, все мои строки правильно указаны. Сам echo
имеет как открывающий, так и закрывающий "
, и внутри самой строки у меня есть оба \\\"
, чтобы напечатать сам символ "
. Поэтому я не совсем понимаю, почему я получаю эту ошибку.
Я пробовал это
sed -r 's/(version=)([0-9])\.([0-9])\.([0-9])/echo " \1\\\"\2.\3.$((\4+1))\\\" \""/ge' Dockerfile
Где я добавил \"
до закрытия "
echo
: \ "" / ge ', и это на самом деле работает. Опять же, я не совсем понимаю, почему это будет работать, думал.
Спасибо за помощь