From the bash software manual:
${parameter/pattern/string}
The pattern is expanded to produce a pattern just as in filename expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string.
... If pattern begins with ‘%
’, it must match at the end of the expanded value of parameter.
And so I've tried:
local new_name=${file/%old/new}
Where string is an absolute file path (/abc/defg/hij
and old
and new
are variable strings.
However this seems to be trying to match the literal %sb1
.
What is the syntax for this?
Expected Output:
Given
old=sb1
new=sb2
Then
/foo/sb1/foo/bar/sb1
should become /foo/sb1/foo/bar/sb2
/foo/foosb1other/foo/bar/foosb1bar
should become /foo/foosb1other/foo/bar/foosb2bar