Такой код написан в скрпте script.sh#!/bin/sh
#!/usr/local/bin/bash
str="a-a-a-"
echo $str
echo ${str//-/}результат выполнения: ./script.sh: ${str/...}: Bad substitution
В чем загвоздка? Кто-нибудь понимает?
Спасибо за ответ
>[оверквотинг удален]
>#!/bin/sh
>#!/usr/local/bin/bash
>str="a-a-a-"
>echo $str
>echo ${str//-/}
>
>результат выполнения: ./script.sh: ${str/...}: Bad substitution
>
>В чем загвоздка? Кто-нибудь понимает?
>Спасибо за ответМожно конечно запускать bash ./script.sh и тогда работает... но не понятно почему не работает без явного указания bash
>>результат выполнения: ./script.sh: ${str/...}: Bad substitution
>>
>Можно конечно запускать bash ./script.sh и тогда работает... но не понятно почему
>не работает без явного указания bashПотому что "${str//-/}" - это конструкция bash, но не sh. Bash предоставляет значительно больший функционал, нежели стандартный sh. Так как первой строкой у вас указан /bin/sh, то именно он и пытается выполнять скрипт, а такой конструкции он не знает. Укажите в качестве исполнителя скрипта (первая строка) bash и будет вам счастье.
P.S. А вторая строка у вас вообще непонятно, зачем. Каково её назначение?