Я пытаюсь написать сценарий Bash для автоматизации повторяющейся задачи, а именно создания структуры папок, где некоторые из них должны быть пронумерованы (если быть более точным, это предназначено для архивирования некоторых сериалов, которые я преобразовал с DVD в структуре папок, легко понятной для медиаплеера Kodi)
Первая попытка была такой:
echo "Insert the title of the series"
read title
mkdir $title
mkdir $title/extrafanart
mkdir $title/themes
mkdir $title/videoextras
for num in {1..3}
do
mkdir $title/"Season $num"
done
Это правильно создает следующую структуру, в примере
Star Trek
Star Trek\extrafanart
Star Trek\Season 1
Star Trek\Season 2
Star Trek\Season 3
Star Trek\themes
Star Trek\videoextras
это именно то, что мне было нужно. Но, как вы, вероятно, видите, у этого скрипта есть существенный недостаток: общее количество папок сезона фиксировано и не выбирается динамически при каждом запуске скрипта. Поэтому я попытался изменить его следующим образом
echo "Insert the title of the series"
read title
echo "Insert the number of seasons"
read seasons
mkdir $title
mkdir $title/extrafanart
mkdir $title/themes
mkdir $title/videoextras
for num in {1..$seasons}
do
mkdir $title/"Season $num"
done
На этот раз результат не совсем то, что я ожидал, это то, что я получаю
Star Trek
Star Trek\extrafanart
Star Trek\Season {1..3}
Star Trek\themes
Star Trek\videoextras
что не то, что мне нужно.
Я предполагаю, что проблема в первой строке цикла for
, где расширение скобки читается оболочкой как строка, а не как выражение для оценки. Я прав?
Что не так и как я могу исправить этот скрипт?