удаление хвостовых и ведущих строк из переменной за один шаг

У меня есть строка в var f, которая является "res / some / path / file.ext.patch", и я хочу удалить ".patch" и "res /". Это означает, что я ожидаю, что результатом будет "some / path / file.ext".

Я знаю, что могу удалить ведущий "res /" с помощью ${f#res/} и хвостовой ".patch" с помощью ${f%.patch}

Я хочу заменить оба шага без использования временной переменной, поэтому я попробовал это: ${${f#res/}%.patch} но я получаю следующую ошибку:

/bin/bash: ${${f#res/}%.patch}: Wrong variable substitution.

какая

Всего 1 ответ


Операторы расширения параметров не могут быть связаны. Самое близкое, что вы можете сделать для этого за один шаг - это использовать совпадение с регулярным выражением.

[[ $f =~ res/(.*).patch ]] && f=${BASH_REMATCH[1]}

Я оставляю это на ваше усмотрение, если это предпочтительнее

f=${f#res/}
f=${f%.patch}

Есть идеи?

10000