bash
делает brace expansion
до variable expansion
, поэтому вы получаете weekly.{0..4}
.
Поскольку результат предсказуем и безопасен ( Не доверяйте вводу пользователя ), вы можете использоватьeval
в вашем случае:
$ WEEKS_TO_SAVE=4
$ eval "mkdir -p weekly.{0..$((WEEKS_TO_SAVE))}"
примечание :
eval
это зло - используйте
eval
осторожно
Здесь $((..))
используется для принудительного вычисления переменной как целочисленного выражения.