Из руководства по программному обеспечению bash:
${parameter/pattern/string}
Шаблон расширяется для получения
шаблон так же, как в расширении имени файла. Параметр расширен и
самое длинное совпадение шаблона с его значением заменяется на строку.
... Если шаблон начинается с ‘%
’, он должен совпадать
в конце расширенного значения параметра.
И вот я попробовал:
local new_name=${file/%old/new}
Где строка - это абсолютный путь к файлу (/abc/defg/hij
, old
и new
- переменные строки.
Однако, похоже, что он пытается соответствовать буквальному значению %sb1
.
Какой синтаксис для этого?
Ожидаемый результат:
учитывая
old=sb1
new=sb2
Тогда
/foo/sb1/foo/bar/sb1
должно стать /foo/sb1/foo/bar/sb2
/foo/foosb1other/foo/bar/foosb1bar
должно стать /foo/foosb1other/foo/bar/foosb2bar