Sto provando a scrivere uno script Bash per automatizzare un'attività ricorrente, vale a dire la creazione di una struttura di cartelle, in cui alcune di esse dovrebbero essere numerate (Per essere più specifici, si intende archiviare alcune serie TV che ho convertito dal DVD in una struttura di cartelle facilmente comprensibile dal lettore multimediale Kodi)
Un primo tentativo è stato così:
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
Questo crea correttamente la seguente struttura, ad esempio
Star Trek
Star Trek\extrafanart
Star Trek\Season 1
Star Trek\Season 2
Star Trek\Season 3
Star Trek\themes
Star Trek\videoextras
che è esattamente quello di cui avevo bisogno. Ma, come probabilmente vedrai, c'è uno svantaggio principale in questo script: il numero totale di cartelle stagionali è fisso e non scelto dinamicamente ogni volta che lo script viene eseguito. Quindi ho provato a modificarlo come segue
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
Questa volta, il risultato non è esattamente quello che mi aspettavo, questo è quello che ottengo
Star Trek
Star Trek\extrafanart
Star Trek\Season {1..3}
Star Trek\themes
Star Trek\videoextras
che NON è quello di cui ho bisogno.
Immagino che il problema sia nella prima riga del forciclo, in cui l'espansione del controvento viene letta dalla shell come una stringa e non come un'espressione da valutare. Ho ragione?
Cosa c'è di sbagliato e come posso correggere questo script?
$title(es. mkdir "$title"E mkdir "$title/Season $num")
{1..$seasons}non è un'espansione del controvento valida e viene trattata letteralmente.