Строки 2,3,4 предназначены для построения имени переменной
(2) _f="$(basename "${f}" .sh)"
(3) _f="${_f#???-}"
(4) __f="CT_DEBUG_${_f^^}"
В строке 2 путь удален, а также .sh в конце.
В строке 3 первые 4символы удаляются, когда четвертый символ представляет собой -
.
. В строке 4 он добавляется к строке и преобразуется в верхний регистр.
Давайте посмотрим, что происходит с a / b / c.sh и ddd-eee.sh
a/b/c.sh ddd-eee.sh
(2) c ddd-eee
(3) c eee
(4) CT_DEBUG_C CT_DEBUG_EEE
Шаги 2,3,4 можно заменить на 1 строку:
__f=$(sed -r 's#(.*/)*(...-)?(.*).sh#CT_DEBUG_\U\3#' <<< "$f")
РЕДАКТИРОВАТЬ: Сначала у меня было (...-)*
, что не удалось бы с aaa-bbb-c.sh
: bbb-
тоже будет удален!
В этом случае у вас нет переменной _f
, которая используется позже в коде, поэтому вы можете захотеть 2 строки:
_f=$(sed -r 's#(.*/)*(...-)?(.*).sh#\3#' <<< "$f")
__f="CT_DEBUG_${_f^^}"