Вы помещаете вашу переменную в простые кавычки, поэтому '$ {b}' никогда не будет интерпретироваться. Попробуйте это:
for a in NL*.zip; do
sudo mkdir "/home/shokufeh/Desktop/normals/T1/${a}";
done
Нет необходимости в переменных $ files и $ b.
Подводя итог, скажем, var=3
,
echo "$var"
будет дисплей 3
echo '$var'
будет отображаться $var
echo "'$var'"
будет отображаться '3'
echo '"$var"'
будет отображаться "$var"
Надеюсь, это имеет смысл. Кавычки функционируют как скобки и скобки.