#macos #docker #debian
Вопрос:
У меня есть файл Dockerfile, и я хотел бы получить из него файл AIRFLOW_VERSION:
Докерфайл
ARG AIRFLOW_VERSION="2.1.0" <---- This one
Эта команда отлично работает на моем локальном компьютере (OSX):
export AIRFLOW_VERSION=$(grep "ARG AIRFLOW_VERSION=" /Dockerfile | grep -Eo "d.d.d")
echo $AIRFLOW_VERSION
2.1.0
Но когда я запускаю его на машине Debian (Gitlab Runner), он ничего не находит. Вытащил изображение бегуна локально и дважды проверил, ничего не нашел. Файл есть, нет проблем с отсутствием на неуместном файле.
Ответ №1:
Я считаю, что проблема связана с другой версией grep
реализации: GNU для Debian и BSD для Mac OS.
Попробуйте заменить -E
на -P
: grep -Po "d.d.d"
.
Ответ №2:
Вы пытаетесь использовать perl regexpr (PCRE) :
echo AIRFLOW_VERSION="2.1.0" | grep -Po "d.d.d"
В debian -E
подразумеваются расширенные регулярные выражения (ERE):
echo AIRFLOW_VERSION="2.1.0" | grep -oE "[0-9] .[0-9] .[0-9] "