Non sono consentiti spazi bianchi attorno a =
in un compito.
dir="${file%%.*}"
Al contrario, gli spazi bianchi sono obbligatori in un test.
if [ -e $dir ]; then
^ ^
Per quanto riguarda i miglioramenti stilistici, non fa male fare un mkdir -p
non necessario , così puoi sbarazzarti del if
dichiarazione.
Le virgolette non sono richieste in un compito, quindi puoi rimuoverle dal dir=
linea. Le citazioni sono comunque una buona idea ovunque, quindi non eliminare le altre virgolette.
Potrebbe essere utile aggiungere un ulteriore .*
al ciclo for. In questo modo, se esegui lo script più di una volta, non tenterà di spostare le sottodirectory appena create. E un bel trucco (sebbene non necessariamente un miglioramento) è accorciare BR*.* W0*.*
a {BR,W0}*.*
.
for file in {BR,W0}*.*; do
dir=${file%%.*}
mkdir -p "$dir"
mv "$file" "$dir"
done