Не самый надежный, но, пожалуй, самый простой способ - просто заменить все двоеточия на /bin:
используя расширение параметра:
foo=/my/path/one:/my/path/two:/my/path/three
noo=${foo//:/\/bin:}/bin
echo $noo
/my/path/one/bin:/my/path/two/bin:/my/path/three/bin
Объяснение:
Синтаксис ${foo}
позволяет выполнять поиск и замену многих типов в переменной. В этом случае мы используем сопоставление с шаблоном, причем шаблоны разделяются косой чертой. Обычно вы можете сделать что-то вроде этого:
$(foo/findme/replace}
который будет искать строку findme
в $foo
и заменяет ее на replace
.
Чтобы заменить двоеточия на x
, вы можете искать с помощью ${foo/:/x/}
но для замены всего, а не только первого, вы ставите две косые черты в начале. Чтобы использовать косую черту в замене, вам нужно экранировать ее обратной косой чертой \/
Все вместе, это дает нам образец, использованный выше (пробелы добавлены для ясности, но они сломают его в реальной жизни):
<find> <replace>
${foo // : / \/bin: }
Остальное уже история.