Замена строк в bash - ошибка с плохой заменой

Я новичок в bash скриптах, но я не понимаю, почему он не работает.

#!/bin/bash
foo=foobarfoobar
echo ${foo//bar/baz}

ошибка плохой замены в строке 3

Ответ 1

Эта подстановка отлично работает в Bash 4.2.8 (и выглядит хорошо в соответствии с документацией).

Мое лучшее предположение, что вы на самом деле не используете Bash - как вы вызываете script? Если вы выполняете sh script.sh, вы можете запустить его с помощью Dash или чего-то подобного (и Dash действительно дает ошибку замены в строке 3). Попробуйте явно запустить его с помощью Bash (bash script.sh).

Если окажется, что вы на самом деле используете Dash, есть полезная информация о различиях и о том, как вернуться к использованию Bash (если вы хотите) здесь: https://wiki.ubuntu.com/DashAsBinSh

Ответ 2

$ foo=foobarfoobar
$ echo ${foo}/bar/baz
foobarfoobar/bar/baz

Просто у вас есть скобки в неправильном месте, но тогда я не эксперт в BASH, поэтому, возможно, это не тот эффект, который вы собираетесь делать.