Давайте я расставлю пробелов, что-б было нагляднее...
export SUBDOMAIN=$(echo $CI_COMMIT_REF_NAME | cut -d'/' -f2)
export SUBDOMAIN -- делаем переменную SUBDOMAIN "глобальной", то-есть она сохранится даже после завершения работы скрипта(но только до завершения сеанса командной оболочки).
Всё что находится между $( ), это ммм... литерал, полученный в результате последовательной обработки значения переменной $CI_COMMIT_REF_NAME
Вкратце --
echo $CI_COMMIT_REF_NAME | cut -d'/' -f2
утилита есho просто печатает на экран значение переменной $CI_COMMIT_REF_NAME . Оператором | мы заставляем её не печатать на экране, а передавать на вход утилите cut, из комплекта GNU coreutils(если меня не глючит мой склероз) cut умеет обрезать строки по определённым правилам.
man cut:
cut - remove sections from each line of files
SYNOPSIS
cut OPTION... [FILE]...
DESCRIPTION
Print selected parts of lines from each FILE to standard output.
With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-b, --bytes=LIST
select only these bytes
-c, --characters=LIST
select only these characters
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no de‐
limiter character, unless the -s option is specified
-n (ignored)
--complement
complement the set of selected bytes, characters or fields
-s, --only-delimited
do not print lines not containing delimiters
--output-delimiter=STRING
use STRING as the output delimiter the default is to use the input
delimiter
-z, --zero-terminated
cut -- читает строки(в вашем случае скорее всего одну строку), в качестве разделителя между полями использует символ / и печатает в результате только второе поле. То-есть если сделать так:
echo "a/bb/cc/d" | cut -d'/' -f2 #то на выходе мы получим строку bb
Вот как это выглядит на практике.
Это ответ на вопрос номер 1 ;-)
Ответ на вопрос номер два... Впрочем вы сейчас сами всё поймёте, когда я из однострочника сделаю многострочник...
export LINK=$(if [ $CI_JOB_NAME = "Run with DB" ];
then
echo $SUBDOMAIN;
else
echo "master";
fi)
Теперь понятно, что такое fi? Это просто закрывающая скобка к if. -- if наоборот, или fin ;-)