После долгих поисков и некоторой игры я нашел следующее:
Чтобы получить длину в символах переменной среды:
echo ${#VARNAME}
Чтобы получить вложеннуюстрока из переменной окружения:
echo ${VARNAME:start:length}
Где «начало» - это основание 0, а «длина» - это количество символов для извлечения, длина не обязательна, и если не указано, просто используйте:
echo ${VARNAME:start}
Результатом будет весь контент из указанного начального смещения.
Поэтому для моего случая решение:
export NEW_VARIABLE=${FULL_DIR:${#DIR_PREFIX} + 1}
Для поиска и замены любых пробелов на экранированные пробелы:
export NEW_VARIABLE=${NEW_VARIABLE// /\\ }
«//» заменяет все экземпляры, если просто «/», то заменяется только первый, «/ \» - экранированная версия символа пробела.